序号 |
文件 |
代码行 |
处理完成否 |
|
|
|
|
n 查找所有的文本输入控件
通过文件查找前台所有的””text””,”’text’”,”type=text”,”textarea”,”textbox”字样,筛选出含文本输入的控件,这些控件包括:
<input type="text" />
<textarea></textarea>
<asp:TextBox runat="server"></asp:TextBox>
n 查找所有带参数的URL
通过文件查找所有的”aspx?”,”html?”,”htm?”,”.svc”(随系统的文件后缀方案而定),筛选出所有带参数的URL。
n 查找所有的ajax
通过文件查找前台中所有的”ajax”,筛选出所有的ajax输入。
n 查找所有cookie
通过文件查找所有的”cookie”,找出所有设置cookie的地方。
n 查找所有session
通过文件查找所有的” session”,找出所有设置session的地方。
n 处理以上查找的结果
分别将其对应的输出查找出来,然后汇集为如下的表格:
序号 |
前台文件 |
输入出代码行 |
输出文件 |
为输出赋值的代码行 |
处理完成否 |
|
|
|
|
|
|
n 查找遗漏
为了防止遗漏,需要直接查找输出,通过文件查找所有的”Response.Write”(后台),” innerHTML”(前台),”document.write”(前台)。将遗漏更新到上面的表格中。
注意,实际上,如果将应用程序变量和数据库内容赋值给前台控件,通过这种方式还是不能找到遗漏的,只能依赖于前面的输入的查找来一定程度上避免这种情况。
n 根据以下表格中的处理方法来处理上面统计出来的表格中的代码行,为输出Encode
为了防范XSS攻击,我们可以使用Anti-Cross Site Scripting Library(查看http://msdn.microsoft.com/en-us/library/aa973813.aspx,不过当前版本已经到了4.2.1,下载地址为:http://www.microsoft.com/en-us/download/details.aspx?id=28589)
该Library提供如下的几个函数,分别对不同的应用场景作出处理:
Encoding Method |
Should Be Used If … |
Example/Pattern |
HtmlEncode |
Untrusted input is used in HTML output except when assigning to an HTML attribute. |
<a href="http://www.contoso.com">Click Here [Untrusted input]</a> |
HtmlAttributeEncode |
Untrusted input is used as an HTML attribute |
<hr noshade size=[Untrusted input]> |
JavaScriptEncode |
Untrusted input is used within a JavaScript context |
<script type="text/javascript"> … [Untrusted input] … </script> |
UrlEncode |
Untrusted input is used in a URL (such as a value in a querystring) |
<a href="http://search.msn.com/results.aspx?q=[Untrusted-input]">Click Here!</a> |
VisualBasicScriptEncode |
Untrusted input is used within a Visual Basic Script context |
<script type="text/vbscript" language="vbscript"> … [Untrusted input] … </script> |
XmlEncode |
Untrusted input is used in XML output, except when assigning to an XML attribute |
<xml_tag>[Untrusted input]</xml_tag> |
XmlAttributeEncode |
Untrusted input is used as an XML attribute |
<xml_tag attribute=[Untrusted input]>Some Text</xml_tag> |
n 确保配置web.config中的validateRequest="true"
n 确保Cookie的httponly
通过文件查找所有的”cookie”,找出所有设置cookie的地方,为用于认证的cookie设置如下的格式:
Set-Cookie: cookieName=cookieValue;httponly
参考:
http://msdn.microsoft.com/en-us/library/ff649310.aspx
http://msdn.microsoft.com/en-us/library/aa973813.aspx