【问题标题】:Checklist for Web Site Programming Vulnerabilities网站编程漏洞清单
【发布时间】:2008-08-26 19:51:32
【问题描述】:
观看 SO 上线对我来说是一种教育。我想列出针对网站的各种漏洞和漏洞利用清单,以及可以使用哪些编程技术来防御它们。
- 哪些类别的漏洞?
- 什么样的防御性编程技术?
- 等等……
【问题讨论】:
标签:
security
defensive-programming
【解决方案2】:
我认为 OWASP 信息是一种宝贵的资源。以下内容可能也很有趣,尤其是攻击模式:
【解决方案3】:
显然测试每个字段的漏洞:
- SQL - 转义字符串(例如
mysql_real_escape_string)
- XSS
- 从输入字段打印 HTML(通常是 XSS 的好兆头)
- 除该字段创建的特定目的之外的任何其他内容
搜索无限循环(唯一可以真正杀死服务器的间接事物(如果很多人不小心发现的话)。
【解决方案4】:
一些预防技巧:
XSS
如果您从用户那里获取任何参数/输入并计划在日志或网页中输出它,请对其进行清理(剥离/转义任何类似于 HTML、引号、javascript...)如果您在其内部打印页面的当前 URI,清理!例如,即使打印 PHP_SELF 也是不安全的。消毒!反射型 XSS 主要来自未经处理的页面参数。
如果您从用户那里获取任何输入并保存或打印,如果检测到任何危险/无效内容,请警告他们并让他们重新输入。 IDS 有利于检测(例如 PHPIDS)。然后在存储/打印之前进行消毒。然后,当您从存储/数据库中打印某些内容时,请再次进行清理!
输入 -> IDS/清理 -> 存储 -> 清理 -> 输出
在开发过程中使用代码扫描器来帮助发现潜在易受攻击的代码。
XSRF
- 永远不要使用 GET 请求
破坏性功能,即
删除帖子。相反,只有
接受 POST 请求。 GET 让黑客攻击变得更加容易。
- 检查
推荐人以确保请求
来自您的网站不是
工作。欺骗并不难
推荐人。
- 使用随机散列作为令牌,该令牌在每个请求中都必须存在且有效,并且会在一段时间后过期。在隐藏的表单字段中打印令牌,并在表单发布时在服务器端进行检查。坏人必须提供正确的令牌才能伪造请求,如果他们设法获得真正的令牌,则需要在过期之前。
SQL 注入
- 您的 ORM 或 db 抽象类应该具有清理方法 - 始终使用它们。如果您没有使用 ORM 或 db 抽象类...您应该使用。
【解决方案7】:
易于监督且易于修复:对从客户端收到的数据进行清理。检查诸如“;”之类的东西可以帮助防止恶意代码被注入到您的应用程序中。
【解决方案8】:
生日,
David Wheeler 编写的FlawFinder 是一个很好的安全静态分析工具。它在寻找各种安全漏洞方面做得很好,
但是,它并不能取代让知识渊博的人阅读您的代码。正如大卫在他的网页上所说,“有工具的傻瓜仍然是傻瓜!”
HTH。
干杯,
抢
【解决方案9】:
您可以从Security Compass 获得好的 Firefox 插件来测试多个缺陷和漏洞,例如 xss 和 sql 注入。太糟糕了,它们不适用于 Firefox 3.0。我希望这些将很快更新。