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

preview
4星 · 超过85%的资源 需积分: 0 8 下载量 110 浏览量 更新于2012-09-20 收藏 20KB DOC 举报
### ASP.NET Web应用程序的安全解决方案 #### 一、ASP.NET Web应用程序架构安全隐患 ##### 1. 对于程序集主要威胁 - **未验证的访问**:未经授权的用户或恶意软件能够访问程序集,导致数据泄露或被篡改。 - **反向工程**:攻击者通过对程序集进行逆向分析,来获取应用程序的核心逻辑和技术细节。 - **代码注入**:通过恶意输入,将恶意代码嵌入到应用程序中执行。 - **通过异常获得程序信息**:利用程序异常时提供的信息来推测程序内部结构或数据。 - **未审核访问**:未经适当审查的过程或资源可能会被恶意利用。 ##### 2. 客户端与Web应用程序之间的安全隐患 - **代码注入**(例如跨站点脚本XSS或缓冲区溢出):通过恶意脚本或数据来获取敏感信息或控制权。 - **网络监控**:监听网络流量以窃取密码或其他敏感信息。 - **参数破解**:通过操纵表单字段、查询字符串、Cookies、视图状态或HTTP头部信息来进行攻击。 - **会话状态变量ID取得**:通过各种手段非法获取用户的会话标识。 - **信息获取**(通常使用异常):利用异常信息来获取关于应用程序的信息。 ##### 3. Web应用程序客户端与企业服务之间的安全隐患 - **非审核访问**:未经授权访问企业服务。 - **破解配置数据**:通过恶意手段获取应用程序的配置信息。 - **网络监视**:监视网络通信以获取敏感数据。 - **未约束代理**:恶意中间人攻击,修改或拦截通信。 - **数据复制**:非法复制数据用于其他目的。 ##### 4. Web服务客户端及其服务之间的安全隐患 - **非审核访问**:未授权的访问。 - **参数破解**:通过操纵参数来获取或改变数据。 - **配置数据取得**:非法获取配置数据。 - **网络监视**:监听网络通信。 - **消息回复**:通过回复消息来实施攻击。 ##### 5. Remoting客户端及服务器之间的安全隐患 - **非审核访问**:未经授权访问服务。 - **参数破解**:操纵参数进行攻击。 - **序列化**:利用序列化漏洞进行攻击。 - **网络监控**:监视网络流量以获取信息。 ##### 6. 客户端到数据库之间的安全隐患 - **非审核访问**:未经授权访问数据库。 - **SQL注入**:通过恶意输入来执行恶意SQL命令。 - **破解数据模型和链接详细信息**:通过各种手段获取数据库结构信息。 - **网络监控**:监听网络流量获取敏感信息。 - **破解配置数据**:非法获取数据库配置信息。 - **破解面向应用程序数据**:获取应用程序使用的敏感数据。 #### 二、ASP.NET Web应用程序安全性隐患防治办法 ##### 1. 防止跨站点脚本攻击(Cross-Site Scripting Attack) - **攻击方法**:在页面通过输入脚本或HTML内容获取敏感数据。 - **威胁指数**:6 - **攻击结果**:应用程序拒绝服务或重启,获得错误堆栈信息,推测代码进行下一步攻击。 - **预防措施**: - 使用ASP.NET控件验证或服务器端输入验证。 - 采用客户端验证和服务器端验证结合的方式对用户输入进行验证。 - 通过比较控件输入和其HTML译码值的一致性确认输入字符串中是否含有HTML特殊符号,以此作为依据转化HTML特殊符号。 ##### 2. 防止SQL注入攻击(SQL Injection Attack) - **攻击方法**:通过画面输入或URL参数修改,利用其作为SQL查询条件的特殊性,将输入SQL文本注入并返回结果的攻击。 - **威胁指数**:9 - **攻击结果**:可查询敏感数据并可修改系统数据。 - **预防措施**: - 在数据更新和查询时使用数据库参数对象或使用自定义方法转换输入参数。 - 使用参数化查询或预编译语句来增强安全性。 ##### 3. 验证用户输入 - **客户端验证**:主要负责验证用户输入的类型、长度、关联关系的验证。 - **服务器端验证**: - **输入验证**:对用户输入文字的HTML特殊字符进行验证,含有特殊字符的要抛出系统错误。 - **数据验证**:验证数据类型、长度等,在对象上进行验证。 ##### 4. 使用Hash算法保存密码 - **实现方式**:使用ASP.NET Membership管理用户,用户密码使用Hash算法和Salt加密。 - **优点**:即使密码被盗也难以解密。 ##### 5. 数据安全性 - **加密敏感数据**:基础结构应提供Hash加密算法支持数据加密。 - **XML数据安全性**:防止XPath注入和XXE(扩展XML实体)注入攻击。 - **预防措施**:不在XML中保存敏感信息,所有配置文件中的敏感信息需要加密保存,对于要写入XML的数据应先通过验证。 - **ViewState数据安全性**:防止从ViewState获取敏感数据。 - **预防措施**:禁用ViewState或避免,使用简单控件采用加密方式保存敏感信息。 ##### 6. 存储安全信息到注册表和配置文件 - **控制远程用户对配置文件的访问权限**:保护配置文件中的敏感数据。 ##### 7. 在发布前修正配置文件 - **防止错误堆栈信息推测以及通过其它信息查获手段进行攻击**: - **错误堆栈信息推测攻击**:造成系统异常,通过错误页上的堆栈信息推测代码进行下一步攻击。 - **威胁指数**:6 - **预防措施**:在发布前对配置文件进行修正,关闭CustomErrors特性,避免在生产环境中显示详细的错误信息。 以上所述的每一个环节都是确保ASP.NET Web应用程序安全的关键。开发者需要全面考虑并采取有效的措施来抵御各类攻击,从而保障应用程序的安全性和稳定性。