龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > asp.net编程 >

ASP.NET开发网站程序安全解决方案(防注入等)(2)

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
2. 防止 SQL 注入攻击( SQL Injection Attack ) 攻击方法:通过画面输入或URL参数修改,利用其作为SQL查询条件的特殊性,将输入SQL文注入并返回结果的攻击。

2.      防止SQL注入攻击(SQL Injection Attack

攻击方法:通过画面输入或URL参数修改,利用其作为SQL查询条件的特殊性,将输入SQL文注入并返回结果的攻击。

威胁指数:9

攻击结果:可查询敏感数据并可修改系统数据。

预防措施:在数据更新和查询时使用数据库参数对象或使用自定义方法转换输入参数,以使注入SQL文失效。

3.      验证用户输入

通过客户端验证为主、服务器端验证为辅(当禁用客户端Javascript时服务器端验证就尤为重要)

客户端验证主要负责验证用户输入的类型、长度、关联关系的验证(此功能由系统扩展控件提供);

服务器端验证分为两部分:

1)      输入验证

输入验证需要对用户输入文字的HTML特殊字符进行验证,含有特殊字符的要抛出系统错误;数据的长度控制尽量在画面通过控件的允许输入长度进行控制;

2)      数据验证

验证数据类型、长度等;此验证行为在对象上进行。

4.      使用Hash算法保存密码

使用ASP.NET Membership管理用户,用户密码使用Hash算法和Salt加密,安全性高;

对于其它需要保存的密码,系统基础结构将提供Hash加密算法进行不可反向加密,作为验证凭据,或者先取先用不保存在数据存储中。

5.      数据安全性

1)      加密敏感数据:基础结构应提供Hash加密算法支持数据加密。

2)      XML数据安全性:防止XML数据攻击。

攻击方法:XPath注入和XXE(扩展XML实体)注入攻击。

威胁指数:8

攻击结果:获得XML文件信息。

预防措施:不在XML中保存敏感信息,所有配置文件中的敏感信息需要加密保存,对于要写入XML的数据应先通过验证。

3)      ViewState数据安全性:防止从ViewState获取敏感数据。

攻击方法:通过解码ViewState获得敏感信息。

威胁指数:6

攻击结果:获得ViewState中的敏感信息。

预防措施:禁用ViewState或避免,使用简单控件采用加密方式保存敏感信息。

关联问题:使用JSON字符串时注意敏感数据的处理。

6.      存储安全信息到注册表和配置文件

控制远程用户对配置文件的访问权限,保护配置文件中的敏感数据。

7.      再发布前修正配置文件

为防止错误堆栈信息推测以及通过其它信息查获手段进行攻击,ASP.NET Web应用程序在发布前应对配置文件进行修正。

错误堆栈信息推测攻击

攻击方法:造成系统异常,通过错误页上的堆栈信息推测代码进行下一步攻击。

威胁指数:6

攻击结果:推测系统版本和代码逻辑。

防措施:捕异常使用理不表示错误信息,将自定义错误节<customErrors mode=”Off” />即可防止错误信息表示给远;同时应闭调试开关<compilation defaultLanguage=”vb” debug=”false” />防止通过调试信息泄漏源代注入。


同时应该关闭
Trace优化性能并防止方法攻击者利用Trace推测代码执行过程和详细内容:<trace enabled=”false” requestLimit=”10” pageOutput=”false” traceMode = ”SortByTime” />

对于Web服务要防止远程用户利用WSDL描述进行推测攻击。

攻击方法:访问Web服务WSDL文件,获得Web服务相关信息。

威胁指数:4

攻击结果:获得Web服务方法描述,推测Web服务参数,进行下一步攻击。

预防措施:在配置文件中指定不表示Web方法描述内容,配置文件改修如下:

              <webServices>

<protocols>

<remove name="Documentation"/>

</protocols>

</webServices>

 

8.      使用Session但不使用CookielessSession

原因:CookielessSession将在URL中曝露SessionID,使别人易于利用进行攻击。

9.      预防方向工程

攻击方法:获得程序集使用工具进行反向工程。

威胁指数:9

攻击结果:了解程序逻辑,盗取开发成果。

预防措施:在发布时进行强加密和混淆工程。

参考:

ASP.NET Security: 8 Ways to Avoid Attack

http://www.devx.com/security/Article/20898/1954

Hacking Exposed Web 2.0 : Web 2.0 Security Secrets and Solutions,Rich Cannings, Himanshu Dwivedi, Zane Lackey,2008.


精彩图集

赞助商链接