0

我通常使用 codeigniter 框架,它提供了一些防止 sql 注入的帮助,例如 xss clean of form input data。

我对什么是 sql 注入以及如何阻止它的发生有一个基本的了解,但是我的一个朋友有一个非常基本的站点,其中唯一的用户输入是电子邮件脚本的 cgi 表单 - 该站点的某些部分被替换为一些成人内容。

所以我很好奇有人如何控制这样一个基本站点,以及在构建自己的站点时应该注意哪些漏洞?

4

4 回答 4

7

一个好的起点是OWASP

特别是OWASP Top 10 详细介绍了最常见的安全问题

原则上你应该...

  • 永远不要相信用户输入(包括表单输入、URL 输入、cookies - 用户可以更改的任何内容,包括使用 Firebug 等检查工具或 Fiddler 等中间人工具)。有很多这样的类别,但 OWASP 确实单独涵盖了它们。

  • 永远不要相信其他人的脚本(例如,您将他们的 JavaScript 文件包含在您的网站中,或者将他们的 PHP 文件包含在您的网站中)

  • 切勿通过纯 HTTP 执行登录或其他敏感数据交换

于 2012-09-27T14:13:10.393 回答
1

最好的办法是阅读 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 的问题越来越少。

于 2012-09-27T14:24:00.247 回答
1

安全问题与代码行数一样多。一些例子:

  • SQL注入
  • 后端的 XSS(包括远程代码require_once($_GET['x']
  • 前端的 XSS(包括 JAVASCRIPT 进入页面以劫持会话)
  • 代表用户运行不需要的操作 - 每个操作,如“更改密码”、“更改配置文件”、“注销”、“添加内容”都应该需要一个唯一的令牌,否则有人可以将用户重定向到这些操作
  • 如果您从svn checkout保护每个公共目录中的 .svn 文件夹中释放

您始终可以使用一些扫描器,例如http://code.google.com/p/skipfish/来帮助您发现应用程序中的安全问题。

于 2012-09-27T14:26:35.123 回答
1

您可以查看 www.enigmagroup.org/,这对于了解不同的攻击和漏洞非常有用。

于 2012-09-27T14:12:44.933 回答