步 骤

1、始终不要相信用户输入的內容具备适度的尺寸或是包括适度的标识符。在应用其作出管理决策以前应当自始至终对用户输入开展认证。最好的挑选是建立一个 COM 部件,那样您能够 从 ASP 网页页面中启用该部件来认证用户的输入內容。您还可以应用 Server.HTMLEncode 方式 、Server.URLEncode 方式 ,或是本页底端代码示例中的某一个。

  2、不必根据联接用户输入的字符串数组来建立 ASP 页中的连接数据库字符串数组。故意用户能够 根据在她们的输入內容中插进代码来获得数据查询的访问限制。假如您应用的是 SQL 数据库查询,那麼请应用存储过程建立数据库联接字符串数组。

  3、不必应用默认设置的 SQL 管理人员帐户名 sa。每一个应用 SQL 的用户都了解存有 sa 账号。建立具备可以信赖登陆密码的别的 SQL 管理方法账号,并删掉 sa 账号。

  4、在您储存手机客户端用户登陆密码以前,请对这种登陆密码应用hash算法、开展 base64 编号,或是应用 Server.HTMLEncode 或是 Server.URLEncode 开展编号。您还能够应用本页底端的某一代码示例认证手机客户端登陆密码中的标识符。

  5、不必把管理方法帐户名或登陆密码置放在管理方法脚本制作或 ASP 页中。

  6、不必依据要求题目在代码中作出管理决策,由于题目数据信息能够 被故意用户仿冒。在应用要求数据信息前,自始至终要对其开展编号或是应用下边的代码示例认证其所包括的标识符。

  7、不必将安全性数据储存在 Cookie 中或是将输入字段名掩藏在网页页面中。
自始至终将安全性套接字层 (SSL) 用以根据会话的应用程序,以防止未对会话 Cookie 开展数据加密就推送他们所产生的风险性。假如会话 Cookie 沒有历经数据加密,则故意用户能够 应用一个应用程序中的会话 Cookie 进到到与之在同一过程中的另一个应用程序。

  8、当撰写 ISAPI 应用程序、挑选器或是 COM 目标时,一定要注意因为自变量和数据信息的尺寸而导致的跨站脚本攻击。也要留意很有可能因为表述导致的规范性难题,比如将绝对路径名表述成相对路径名或 URL。

  9、当在并行处理模块 (STA) 内运作的 ASP 应用程序转换到线程同步模块 (MTA) 内时,仿真模拟动态口令将落伍。这很有可能造成 应用程序在无仿真模拟的状况下运作,让其用很有可能容许浏览别的資源的过程的标志合理地运作。假如您务必转换进程实体模型,请在开展变更以前,先禁止使用该应用程序并将其卸载掉。

  代码示例
  本代码示例包括了一个涵数,它可删掉发送到该涵数的字符串数组中的很有可能危害的标识符。在上面的2个示例中,特定代码页以保证恰当地编号。下边的示例应用的是 Microsoft Visual Basic® Scripting Edition(VBScript):

<%@ LANGUAGE="VBScript" %> 
<% 
Response.CodePage = 1252 
Response.Write("Hello, " & RemoveBadCharacters(Request.Form("UserName"))) 
Response.Write("<BR>This is why you received an error:")

Function RemoveBadCharacters(strTemp) 
Dim regEx 
Set regEx = New RegExp 
regEx.Pattern = "[^\s\w]" 
regEx.Global = True 
RemoveBadCharacters = regEx.Replace(strTemp, "") 
End Function 
%>

下边的示例应用的是 Microsoft JScript®:

<%@ LANGUAGE="JScript" %> 
<% 
Response.CodePage = 1252; 
Response.Write("Hello, "   RemoveBadCharacters(Request.Form("UserName"))); 
Response.Write("<BR>This is why you received an error:");

function RemoveBadCharacters(strTemp) { 
strTemp = strTemp.replace(/[^\s\w]/g,""); 
return strTemp; 
} 
%>

本文就详细介绍到这,期待大伙儿多多的适用。