保护asp.net Web应用程序的步骤清单?

时间:2009-10-01 02:06:19

标签: asp.net deployment security

我想保护一个ASP.NET Web应用程序来防止黑客攻击。是否有特定编码的ASP.NET特定任务列表,以使ASP.NET更安全?超越MSDN提到的内容。我对有关避免跨站请求伪造的方法的代码示例的具体步骤感兴趣。跨站脚本。

我知道在连接到SQL Server时使用SQL参数进行sql注入,Windows身份验证以及验证服务器上的表单输入。

3 个答案:

答案 0 :(得分:5)

答案 1 :(得分:1)

OWASP(开放式Web应用程序安全项目)有一个方便的前10个Web应用程序漏洞列表: http://www.owasp.org/index.php/Top_10_2007

以下是Microsoft Anti-Cross Site Scripting Library 1.5教程: http://msdn.microsoft.com/en-us/library/aa973813.aspx

这是一个非常有用的,虽然不是很有名的安全资源,ASP.NET 2.0 Internet安全参考实现 - 基本上是模式&做法: http://code.msdn.microsoft.com/ASPNETv2RefImp

最后但并非最不重要的是,这是关于CAT.NET背后架构的视频: http://channel9.msdn.com/posts/Jossie/Architecture-behind-CATNET/

在此处下载最新版本的CAT.NET工具(32位和64位): http://bit.ly/164BlV

答案 2 :(得分:1)

Top Ten Security Threads
How To: Prevent Cross-Site Scripting in ASP.NET
How To: Protect From Injection Attacks in ASP.NET
How To: Protect From SQL Injection in ASP.NET
How To: Use Regular Expressions to Constrain Input in ASP.NET

阅读上述文章后,
我通过使用asp.net技术和实体框架总结了预防方法。

注射合规性
    -Enable Asp.net在asp.net web配置文件中请求验证      - 在asp.net web配置文件中打开自定义错误模式      - 使用服务器端输入验证控件来约束输入      - 系统每个输入的有效长度,范围,格式和类型      - 使用强大的数据输入。
     - 使用HttpUtility.HtmlEncode编码每个自由文本字段和不安全的输出     -Validate文件路径使用System.IO.Path.GetFileName和System.IO.Path.GetFullPath。
     - 使用Request.MapPath将提供的虚拟路径映射到服务器上的物理路径      - 使用Linq to Entities查询语法防止SQL注入攻击。

破坏身份验证和会话管理合规性
     - 用户敏感数据的盐渍哈希方法      - 为每个凭证数据使用SSL / TLS协议      - 正确的会话超时。

跨站点脚本(XSS)合规性
     - 使用正则表达式来约束ASP.NET中的关键输入字段      - 使用ASP.net RegularExpressionValidator和RangeValidator来约束服务器端输入控件      - 编码来自用户或其他来源(如数据库)的每个输入。

不安全的直接对象参考合规性
     - 只允许特定用户/组访问您的项目及其相关文件夹。

安全配置错误
     - 仅向用户显示自定义错误消息。

敏感数据暴露合规性
     - 使用现代加密算法加密所有敏感数据。

缺少功能级别访问控制合规性
     - 确保根据用户授权级别填充系统菜单和程序列表      - 如果对他/她有效,请确保您的系统在回复用户请求之前进行检查。

跨站请求伪造(CSRF)合规性
     - 使用CAPTCHA Image确保计算机不生成请求。
- 使用CSRF Token确保向服务器发送请求的特定页面仅由服务器创建。 / p>

使用已知的易受攻击的组件合规性
     - 始终保持组件/库更新。

未经验证的重定向和转发合规性
     - 在重定向之前,请确保您的系统始终检查URL及其参数是否有效。