解决方案
来自 开放 Web 应用程序安全项目:
前十名是:
- 跨站脚本(XSS)
- 注入缺陷(SQL注入、脚本注入)
- 恶意文件执行
- 不安全的直接对象引用
- 跨站请求伪造 (XSRF)
- 信息泄露和错误处理不当
- 破坏的身份验证和会话管理
- 不安全的加密存储
- 不安全的通信
- 限制URL访问失败
其他提示
我赞同 OWASP 信息,因为它是一种宝贵的资源。以下内容也可能令人感兴趣,尤其是攻击模式:
显然测试每个字段是否存在漏洞:
- SQL - 转义字符串(例如
mysql_real_escape_string
) - 跨站脚本攻击
- 从输入字段打印 HTML(通常是 XSS 的好迹象)
- 任何其他不是创建该字段的特定目的的内容
搜索无限循环(唯一可能真正杀死服务器的间接事物(如果很多人意外发现它))。
一些预防技巧:
跨站脚本攻击
如果您从用户处获取任何参数/输入并计划输出它,无论是在日志中还是在网页中,请对其进行清理(删除/转义任何类似于 HTML、引号、javascript...的内容)如果您打印当前的 URI本身的一个页面,清理!例如,即使打印 PHP_SELF 也是不安全的。消毒!反射型 XSS 主要来自未经清理的页面参数。
如果您从用户处获取任何输入并保存或打印它,则在检测到任何危险/无效内容时警告他们并让他们重新输入。IDS 非常适合检测(例如 PHPIDS)。然后在存储/打印之前进行清理。然后,当您从存储/数据库打印某些内容时,请再次清理!输入 -> IDS/清理 -> 存储 -> 清理 -> 输出
在开发过程中使用代码扫描器来帮助发现潜在的易受攻击的代码。
XSRF
- 切勿使用破坏性功能的请求,即删除帖子。相反,仅接受发布请求。GET 使得黑客攻击变得更加容易。
- 检查推荐人以确保请求来自您的网站 不起作用. 。欺骗推荐人并不难。
- 使用随机哈希作为令牌,该令牌在每个请求中都必须存在且有效,并且会在一段时间后过期。在隐藏的表单字段中打印令牌,并在发布表单时在服务器端检查它。坏人必须提供正确的令牌才能伪造请求,如果他们设法获得真正的令牌,则需要在令牌过期之前获得。
SQL注入
- 你的 ORM 或 db 抽象类应该有清理方法 - 始终使用它们。如果您不使用 ORM 或 db 抽象类...你应该。
SQL注入
跨站脚本攻击 (跨站脚本)攻击
易于监督且易于修复:清理从客户端接收的数据。检查诸如“;”之类的东西可以帮助防止将恶意代码注入您的应用程序。
你好,
一个好的安全静态分析工具是 缺陷查找器 由大卫·惠勒撰写。它在寻找各种安全漏洞方面做得很好,
但是,它并不能取代让知识渊博的人通读您的代码。正如大卫在他的网页上所说,“拥有工具的傻瓜仍然是傻瓜!”
HTH。
欢呼,罗布
您可以获得良好的 Firefox 插件来测试多个缺陷和漏洞,例如 xss 和 sql 注入 安全指南针. 。可惜它们不能在 Firefox 3.0 上运行。我希望这些能尽快更新。