我通常使用 codeigniter 框架,它提供了一些防止 sql 注入的帮助,例如 xss clean of form input data。
我对什么是 sql 注入以及如何阻止它的发生有一个基本的了解,但是我的一个朋友有一个非常基本的站点,其中唯一的用户输入是电子邮件脚本的 cgi 表单 - 该站点的某些部分被替换为一些成人内容。
所以我很好奇有人如何控制这样一个基本站点,以及在构建自己的站点时应该注意哪些漏洞?
我通常使用 codeigniter 框架,它提供了一些防止 sql 注入的帮助,例如 xss clean of form input data。
我对什么是 sql 注入以及如何阻止它的发生有一个基本的了解,但是我的一个朋友有一个非常基本的站点,其中唯一的用户输入是电子邮件脚本的 cgi 表单 - 该站点的某些部分被替换为一些成人内容。
所以我很好奇有人如何控制这样一个基本站点,以及在构建自己的站点时应该注意哪些漏洞?
一个好的起点是OWASP。
特别是OWASP Top 10 详细介绍了最常见的安全问题。
原则上你应该...
永远不要相信用户输入(包括表单输入、URL 输入、cookies - 用户可以更改的任何内容,包括使用 Firebug 等检查工具或 Fiddler 等中间人工具)。有很多这样的类别,但 OWASP 确实单独涵盖了它们。
永远不要相信其他人的脚本(例如,您将他们的 JavaScript 文件包含在您的网站中,或者将他们的 PHP 文件包含在您的网站中)
切勿通过纯 HTTP 执行登录或其他敏感数据交换
最好的办法是阅读 OWASP 前 10 名。如果您不熟悉它,那就是开放 Web 应用程序安全项目,它是一个致力于 Web 应用程序安全的社区。
最容易被恶意用户利用的是 SQL 注入和 XSS。XSS 可能对您的用户不利,但单个 SQL 注入漏洞可能会危及您的整个服务器。可以通过简单地使用参数化查询来防止 SQLI,并且可以通过良好的输入验证和输出编码来防止 XSS。
从软件工程的角度来看,用户提供的输入(包括隐藏字段)不应该驱动核心功能。例如,如果您在您的网站上销售产品并且有一个带有价格的隐藏字段,这是非常糟糕的,因为有人可以很容易地修改该值。
如果您正在收集用户名和密码,请确保它们经过哈希处理和加盐处理,并确保所有显示或收集用户信息的登录屏幕和页面都具有 SSL (https)。
可以在以下网址找到 OWASP 前 10 名文档:https ://www.owasp.org/index.php/Top_10_2010
如果您在输入验证和编码方面需要帮助,请查看 OWASP ESAPI - https://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API并单击 PHP 选项卡。
对于 SQL 注入,只要您正确使用框架,像 codeigniter 这样的框架就应该保护您。谢天谢地,由于框架使用的增加,SQLI 的问题越来越少。
安全问题与代码行数一样多。一些例子:
require_once($_GET['x']
)svn checkout
保护每个公共目录中的 .svn 文件夹中释放您始终可以使用一些扫描器,例如http://code.google.com/p/skipfish/来帮助您发现应用程序中的安全问题。
您可以查看 www.enigmagroup.org/,这对于了解不同的攻击和漏洞非常有用。