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