3

我正在寻找 ASP.Net 中最好的可重用库和内置功能,以防止 OWASP 十大安全漏洞,如注入、XSS、CSRF 等,以及用于检测这些漏洞的易于使用的工具,以供测试团队使用。

您认为在开发生命周期中何时开始将安全编码整合到应用程序中的最佳时机?

4

3 回答 3

4

我的两分钱:

  • 永远不要相信用户输入。这包括表单、cookies、参数、请求......
  • 保持你的图书馆更新。每天都会出现安全漏洞。补丁已发布,但如果您不应用它们/升级您的库,它们将毫无价值。
  • 限制和偏执。如果您需要用户写他的名字,请限制并让他只使用 [Az] 字符等。强约束会惹恼普通用户,但它会使您的系统更加安全。
  • 永远不要记录关键数据。这意味着您不应该记录诸如用户使用的密码(显而易见)之类的内容,而且您也不应该试图记录用户在登录系统失败时输入的密码(因为他可能很容易打错字)猜测)。您可以将此示例扩展到所有关键数据。请记住,如果它不存在,您不必担心有人试图得到它。

并从维基百科的CSFR文章中提取:

  • 要求在 GET 和 POST 参数中进行身份验证,而不仅仅是 cookie;
  • 检查 HTTP Referer 标头;
  • 确保没有 crossdomain.xml 文件授予对 Flash 电影的意外访问权限[14]
  • 限制身份验证 cookie 的生命周期
  • 处理 POST 时,如果您知道 URL 参数应该来自表单,请忽略它们
  • 在所有表单提交和副作用 URL 中要求一个秘密的、用户特定的令牌可以防止 CSRF;攻击者的站点无法在其提交的内容中放入正确的令牌
于 2010-07-06T12:45:21.470 回答
4

我的经验是,仅仅给开发人员一个工具箱并希望得到最好的结果实际上并没有那么好。安全性是代码质量的一个方面。安全问题是错误。像所有错误一样,即使是更了解的开发人员最终也会编写它们。解决这个问题的唯一方法是制定一个流程来捕获错误。

想想你需要什么样的安全过程。只做自动化测试?代码审查?手动黑盒测试?设计文件审查?您将如何对错误跟踪系统中的安全问题进行分类?您将如何确定修复安全漏洞的优先级?您可以向客户提供什么样的保证?

可以帮助您入门的是 OWASP ASVS 验证标准,它可以帮助您验证您的安全验证过程是否确实有效:http ://code.google.com/p/owasp-asvs/wiki/ASVS

于 2010-07-06T14:19:37.863 回答
3

第一个最佳实践:在编码时注意漏洞。如果您编写代码,请考虑一下您在做什么。

于 2010-07-06T11:46:38.580 回答