31

我对 PHP 编码有点陌生,我知道如果您没有清理您的 PHP 代码,恶意用户可能会入侵网站。我想知道他们是否需要一个数据输入框(例如用于文件提交或用户名/密码输入字段)?

像“include (header.php)”这样的命令是否也需要某种安全性,还是它们天生安全?

4

8 回答 8

58

就像任何其他语言一样,PHP 代码与程序员编写的代码一样安全。

与任何其他语言一样,个人(甚至常见)安全风险太多且太详细,无法包含在 StackOverflow 答案中。

查找涵盖安全 PHP 编码的书。

于 2009-10-06T18:07:39.747 回答
22

不要相信用户。

include "a/literal/file.php";

很安全

include $someFile;

意味着您要考虑如何设置 $someFile 。如果您使用用户提供给您的任何数据来设置 $someFile 的值,您最好对其进行清理。

于 2009-10-06T18:10:04.483 回答
10

引用 2006 年 sla.ckers.org 帖子中的 RSnake 的话:

我认为有趣的是 Stefan Esser 从 PHP 事件响应团队退休。不是在董事会上发起宗教战争,但有趣的是,PHP 安全响应团队的创始人厌倦了 PHP 缺乏安全性并因此退出。他的网站目前已关闭(流量泛滥?):[blog.php-security.org] 所以这里是缓存的剪切和粘贴:

2006 年 12 月 9 日星期六

昨晚我终于从 PHP 安全响应团队退休了,这是我几年前最初的想法。

造成这种情况的原因很多,但最重要的是我意识到任何从内部提高 PHP 安全性的尝试都是徒劳的。一旦你试图将 PHP 的安全问题归咎于用户,PHP 小组就会跳入你的船,但当你批评 PHP 本身的安全性时,你就会成为不受欢迎的人。我停止计算我被称为不道德叛徒的次数,因为我披露了 PHP 中的安全漏洞或开发了 Suhosin。

对于普通 PHP 用户,这意味着我将不再在我的建议中隐藏对安全漏洞的缓慢响应时间。这也意味着我的一些建议将没有可用的补丁,因为 PHP 安全响应团队拒绝修复它们数月之久。这也意味着将有更多关于 PHP 安全漏洞的建议。

Stefan Esser 于 10:58 在 PHP、安全性中发布

好吧,虽然听起来很吓人,但我真的很高兴终于在 PHP 安全方面获得了“真正的交易”。我一直对此有点警惕,看看斯特凡要说什么会很有趣。

来源:http ://sla.ckers.org/forum/read.php?2,3976

其中很好地介绍了强化 PHP 项目,Suhosin http://www.hardened-php.net/suhosin/和 Esser 的 PHP 错误月项目http://www.php-security.org/

于 2009-10-14T16:17:22.097 回答
5

PHP 和任何东西一样安全。但并非默认情况下,它依赖于程序员的技能。与 .NET 不同,它在默认情况下倾向于帮助提高安全性。

如果路径是动态生成的,则包含是安全的。

以下是无害的(取决于 myfile.php 中的代码)

include("mypath/myfile.php");
于 2009-10-06T18:10:24.530 回答
5

关于数据输入框,应该关注 SQL 注入攻击、溢出、坏字符等。首先请查看 、 、filter_var()mysql_real_escape_string()函数pg_escape_string()

于 2009-10-07T20:34:17.730 回答
4

同意这里的每个人 - PHP 本身并不比任何其他语言更安全。

不过,您应该深入查看您的php.ini文件。您可能应该了解所有指令。这是很多人在早期犯错误的地方。

于 2009-10-07T01:39:44.937 回答
1

您的问题相当广泛和笼统,但要解决您提出的具体问题:

include (header.php);

相对安全但是

include ($header);

可能是一个危险的安全漏洞,具体取决于$header分配方式以及是否已清理。

于 2009-10-06T18:11:34.710 回答
1

要具体回答这个问题,PHP 作为一种语言是非常安全的。对于语言本身,建议您使用最新的稳定版本以保持基于语言的安全性。php 维护者是创建和修复错误的人;)

于 2009-10-06T20:38:59.113 回答