保护ASP.NET MVC应用程序清单

时间:2009-07-22 22:53:18

标签: asp.net-mvc security

我正在寻找一套指南或清单,您可以通过这些指南或清单来保护公共ASP.NET MVC网站。我只是想确保在部署网站时没有出现任何明显和众所周知的问题。

感谢。

4 个答案:

答案 0 :(得分:5)

  1. 一如既往,确保你正确 编码输出 - 请注意我 这里说编码而不是 的HTMLEncode。如果你正在输出 然后将内容输出到HTML 使用Html.Encode - 但是,如果你是 然后输出到JavaScript 想要使用JavaScript编码 功能。 - 这将帮助您反对跨站点脚本(XSS)
  2. 使用帮助反对CSRF攻击的帮助者(或者可能只是到处)
  3. 根据您访问数据存储的方式,如果它是SQL数据库,请记住通过参数化查询,存储过程,LINQ或者您有什么来保护自己免受SQL注入。
  4. 当你测试时 - 确保你的测试数据包含狡猾的输出(无法调用Html.Encode的东西很容易通过<script type="text/javascript">alert("XSS attack!");</script>XSS here!显示出来的东西,同样适用于注入JavaScript的东西,犯错误显示向上!)
  5. 当模型绑定对属性使用白名单方法时,用户无法使绑定绑定属性不打算绑定!

答案 1 :(得分:1)

我有点做以下事情;

  1. 分开我的担忧。管理员 管理文件夹等。
  2. [授权]关于所有行动 要求你登录。
  3. Html.Encode所有数据输入字段。
  4. ActionResult Create([Bind(Prefix = “”,Exclude =“id”)] MyModel newModelObject)&lt; ==排除可以在攻击中使用的id
  5. 除此之外......

答案 2 :(得分:1)

以下是一般的ASP.NET措施

  1. 在web.config中设置Debug = false
  2. 启用自定义错误
  3. 加密您的Cookie
  4. 验证所有输入
  5. 启用请求验证
  6. 对输出进行编码

答案 3 :(得分:1)

除非绝对必要,否则请勿对操作使用默认GET。例如,如果您的DeleteUser操作没有[AcceptVerbs(HttpVerbs.Post)],则可以通过

调用
<img src="http://yoursite/admin/DeleteUser/1" /> 

任何人“观看”图像都会调用它。