PHP的安全性如何?

时间:2009-10-06 18:05:59

标签: php security include suhosin

我对PHP编码有些新意,我知道如果你没有清理你的PHP代码,恶意用户就可以破解网站。我想知道的是他们是否需要数据输入框(如文件提交或用户名/密码输入字段)?

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

8 个答案:

答案 0 :(得分:58)

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

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

找一本涵盖安全PHP编码的书。

答案 1 :(得分:22)

不要相信用户。

include "a/literal/file.php";

非常安全

include $someFile;

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

答案 2 :(得分:9)

在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发表于PHP,安全时间为10:58

  
     

嗯,听起来很可怕,我真的很高兴最终得到PHP安全的“真正的交易”。我总是对它有点警惕,看看斯特凡要说些什么会很有趣。

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

很好地介绍了Hardened PHP项目,Suhosin http://www.hardened-php.net/suhosin/和Esser的PHP Bug项目http://www.php-security.org/

答案 3 :(得分:5)

PHP与任何东西一样安全。但不是默认情况下,它依赖于程序员的技能。与.NET不同,默认情况下它会提供安全保护。

包含是安全的,如果路径被动态生成,请小心。

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

include("mypath/myfile.php");

答案 4 :(得分:5)

关于数据输入框,应该关注SQL注入攻击,溢出,坏字符等。对于初学者,请检查filter_var()mysql_real_escape_string()pg_escape_string()等函数。

答案 5 :(得分:4)

在这里与大家达成一致 - 与其他任何语言相比,PHP本身并没有或多或少的安全性。

您应该深入了解php.ini文件。您应该了解所有指令。这是许多人在早期犯错误的地方。

答案 6 :(得分:1)

您的问题相当广泛而且一般,但要解决您提出的具体问题:

include (header.php);

相对安全,但

include ($header);

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

答案 7 :(得分:1)

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