我想保护一个ASP.NET Web应用程序来防止黑客攻击。是否有特定编码的ASP.NET特定任务列表,以使ASP.NET更安全?超越MSDN提到的内容。我对有关避免跨站请求伪造的方法的代码示例的具体步骤感兴趣。跨站脚本。
我知道在连接到SQL Server时使用SQL参数进行sql注入,Windows身份验证以及验证服务器上的表单输入。
答案 0 :(得分:5)
来自Microsoft-
http://msdn.microsoft.com/en-us/library/ms998249.aspx
更详细的清单 -
http://technotes.towardsjob.com/dotnet/asp-net-developers-checklist-security-checklist/
答案 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及其参数是否有效。