笔测试您的MVC应用程序

时间:2010-01-27 06:21:14

标签: asp.net-mvc security password-protection penetration-testing

以下是保护MVC应用程序的一些常用做法:

  • 对输出进行编码
  • 参数化您的SQL
  • 向后和向前测试您的搜索
  • 1路哈希密码
  • 锁定帐户或限制登录尝试
  • 访问文件系统时使用基于代码的模拟
  • 使用锁定的用户名访问SQL
  • 使用Honey-pots或验证码提交表单以反击机器人

如果有任何我遗漏或错误请求,请随时捐款。

您在测试自己的软件时使用或考虑的其他技巧/最佳做法。在开始申请之前,你怎么做“踢轮胎”。

您使用哪种笔测试服务或软件?

3 个答案:

答案 0 :(得分:4)

使用模型绑定的所有方法都应使用可绑定属性上的白名单或黑名单进行保护。

string[] allowedProperties = new[]{ "Title", "Description"};
UpdateModel(myObject, allowedProperties);

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create([Bind(Include="Title,Description")] MyObject object )
{

}

这当然是为了防止精心设计的请求尝试以非预期的方式更新/操纵您的对象。

答案 1 :(得分:3)

你的清单很好,虽然有点模糊。例如,md4是单向散列,但它非常不安全,因为我可以在不到一天的时间内在桌面上生成碰撞。具有较大盐值的sha256是一种更安全的方法。 (我知道即使这是描述不完整,也不要火焰)

从来没有一个捕获所有安全检查列表将全面工作。特定应用程序可能存在特定漏洞。有时这些缺陷可能是真正没有分类的逻辑错误。

OWASP Top 10 Web应用程序漏洞是您应该学习的优秀资源。最值得注意的是,你在列表中缺少XSRF,这可能是一场毁灭性的攻击。您没有列出大量基于“接收器”的攻击。例如,如果攻击者可以通过他选择的路径进入fopen怎么办? A Study In Scarlet针对PHP进行了许多针对PHP的攻击。

答案 2 :(得分:1)

您的所有建议都适用于任何Web应用程序,而不仅仅适用于MVC应用程序。

MVC特定的建议就像“瘦控制器,胖模型”。