就个人而言,我尝试编写安全的ASP.NET代码。但是,我对我编写的代码变得非常偏执,因为我曾经为注册商(高欺诈目标)工作。是否有任何ASP.NET功能我应该仔细审查(除了SQL访问 - 我知道不要做动态SQL)。
答案 0 :(得分:4)
这是一篇优秀的MSDN文章:Security Practices: ASP.NET 2.0 Security Practices at a Glance。
摘录:
如何防止跨网站脚本
验证输入和编码输出。 通过验证来限制输入 类型,长度,格式和范围。使用 HttpUtility.HtmlEncode方法来 编码输出,如果它包含输入 来自用户,例如来自表单的输入 字段,查询字符串和cookie或 来自其他来源,例如数据库。 永远不要只是将输入回送给用户 没有验证和/或编码 数据。以下示例说明了如何操作 编码表单字段。
Response.Write(HttpUtility.HtmlEncode(Request.Form["name"]));
如果返回包含的URL字符串 输入到客户端,使用 HttpUtility.UrlEncode方法进行编码 这些URL字符串,如下所示。
Response.Write(HttpUtility.UrlEncode(urlString));
如果您有需要接受的网页 一系列HTML元素,例如 通过某种丰富的文本输入 字段,您必须禁用ASP.NET 请求验证页面。
启用自定义错误以保持错误隐私
<customErrors mode="On" defaultRedirect="YourErrorPage.htm" />
答案 1 :(得分:1)
永远不要相信用户输入。永远不要假设客户端验证会阻止错误的输入数据。始终确保web.config中的ValidateRequest =“true”和EnableEventValidation =“true”: