我正在参与一个关于信息安全的学校项目,其中一项作业是用 PHP 编写一些安全页面。我的小组中没有人了解 PHP,但这不是一个大问题,我们将学到足够的知识来创建所需的简单页面。
学生助理给出的建议之一就是使用这两个函数strip_tags()
and mysqli_real_escape_string()
。我认为这些是安全的,但如果没有深入的知识,我不确定。一些简单的谷歌搜索至少揭示了过去存在的漏洞。由于任务的一部分是尝试破坏其他组织的系统,因此确保我们自己的系统安全并找到其他组织的系统中可能存在的漏洞非常重要。而且大部分群体都会盲目的使用这两个功能。所以我的问题是:
- 是否存在任何已知漏洞
strip_tags()
?
- 是否存在任何已知漏洞
mysqli_real_escape_string()
?
- 是否有一个自然的地方可以搜索此类漏洞(除了询问 StackOverflow)?
首先,我建议您使用Mysqli 准备好的语句。这些都是更安全比转义函数更好,因为它将查询结构与查询参数完全分开。
您可以使用eitherstrip_tags 或 htmlentities 以确保没有恶意代码输出到浏览器。你可能还想跑all在将动态内容输出到浏览器之前,通过某种过滤功能。这是一个组织良好且有凝聚力的 OO 方法可以提供帮助的领域,因为您可以将所有动态内容分配给单个对象,然后该对象负责将输出呈现到浏览器,这样您就可以始终放心地知道您的内容是 XSS安全,无需在多个页面上搜索数百个 echo 语句。
然而,当涉及到 PHP 安全时,这两个建议实际上只触及了冰山一角。还有许多其他问题也必须处理,例如:
我建议您查看以下网站,以获取有关 PHP 安全性主题的更多、更全面的处理:
- shiflett.org
-
phpsecurity.org(这是 Chris Shiflett 的另一个网站,但我不确定他是否在这里还有他个人网站上没有的其他内容)
-
phpsec.org那里的内容没有我想要的那么多,但有一些有用的事情需要知道,例如使包含敏感信息(如数据库密码)的某些配置文件不存储在公开可用的目录中。
对于最后一项,如果可能的话,您将需要考虑使用 .htaccess 文件或其等效的 IIS,以确保只有您想要访问的文件是公开可用的。否则,你所有的其他安全措施都将是徒劳的。
Update:我想到了与项目安全相关的其他几个问题。如果您还记得不久前 Twitter 管理员帐户被黑客入侵的不幸事件,那么发生这种事件的原因有多种,而这些原因本来可以很容易解决。
1) 密码登录尝试不受限制。换句话说,如果用户尝试登录但失败,则来自其 IP 的重复请求可能需要 2 秒来处理第二次,然后下一次需要 4 秒,依此类推。这使得机器人连续尝试登录变得不切实际。
2) 不需要安全密码。由于密码有更高的要求(所需字符的长度和类型,例如字母数字和特殊字符),因此字典攻击变得完全不切实际,因为使用字典来破解密码比提出随机数字字符串要容易得多和信件。此外,随着更多字符的添加,破解密码的时间也会呈指数增长。
你可以看到这个帖子杰夫·阿特伍德(Jeff Atwood)提供了有关此特定主题的更多信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)