【问题标题】:Pen testing your MVC application笔测试您的 MVC 应用程序
【发布时间】:2011-01-09 20:07:48
【问题描述】:
以下是一些常见的用于保护 MVC 应用程序的做法:
- 编码您的输出
- 参数化您的 SQL
- 前后测试您的搜索
- 1 路哈希密码
- 锁定帐户或限制登录尝试
- 访问文件系统时使用基于代码的模拟
- 使用锁定的用户名访问 SQL
- 使用 Honey-pots 或验证码提交表单以对抗机器人
如果有任何我遗漏或错误陈述的,请随时贡献。
在对自己的软件进行渗透测试时,您还使用或考虑了哪些其他技术/最佳做法。在启动应用程序之前,您会采取哪些措施来“踢轮胎”。
如果有的话,您使用哪些渗透测试服务或软件?
【问题讨论】:
标签:
asp.net-mvc
security
password-protection
penetration-testing
【解决方案1】:
所有使用模型绑定的方法都应该通过可绑定属性的白名单或黑名单来保护。
string[] allowedProperties = new[]{ "Title", "Description"};
UpdateModel(myObject, allowedProperties);
或
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create([Bind(Include="Title,Description")] MyObject object )
{
}
这当然是为了防止精心设计的请求以非预期的方式尝试更新/操作您的对象。
【解决方案2】:
你的清单很好,虽然有点模糊。例如 md4 是一种单向哈希,但它非常不安全,因为我可以在不到一天的时间内在我的桌面上生成冲突。具有大盐值的 sha256 是一种更安全的方法。 (我知道即使这是描述不完整,不要着火)
从来没有一个全面适用的安全检查清单。特定应用程序可能具有特定漏洞。有时这些缺陷可能是真正没有分类的逻辑错误。
OWASP Top 10 Web 应用程序漏洞是您应该学习的极好资源。最值得注意的是,您的列表中缺少 XSRF,这可能是一次毁灭性的攻击。您没有列出大量基于“接收器”的攻击。例如,如果攻击者可以通过他选择的路径进行 fopen 怎么办? A Study In Scarlet 讨论了许多针对 PHP 的攻击。
【解决方案3】:
您的所有建议都适用于任何 Web 应用程序,而不仅仅是 MVC 应用程序。
特定于 MVC 的建议类似于“瘦控制器,胖模型”。