PHP的安全性如何?

sli*_*mbo 31 php security include suhosin

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

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

Ste*_*ven 58

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

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

查找涵盖安全PHP编码的书籍.

  • +1,许多人认为PHP是一种不安全的语言,因为许多不安全的代码都是用PHP编写的.这是因为PHP具有相当温和的初始学习曲线,这使得不安全的程序员有机会吐出一些不安全的代码.此外,PHP的部署非常广泛,这使得它有更大的统计机会让不安全的程序员为项目选择它. (31认同)
  • 有关PHP安全性的书 - 我推荐Chris Shiflett撰写的"基本PHP安全性"(http://oreilly.com/catalog/9780596006563/) - 它非常全面,并且表明它实际上并不难以遵循,安全,代码实践. (8认同)

tim*_*dev 22

不要相信用户.

include "a/literal/file.php";
Run Code Online (Sandbox Code Playgroud)

很安全

include $someFile;
Run Code Online (Sandbox Code Playgroud)

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

  • ...如果您需要根据用户输入选择包含,请始终创建一个您知道有效且安全的包含列表,然后将用户输入与该列表上的值匹配 - 并且仅使用安全列表值本身包括. (5认同)

Che*_*oft 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漏洞月项目http://www.php-security.org/


And*_*rew 5

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

包含是安全的,如果路径是动态生成的话要小心.

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

include("mypath/myfile.php");
Run Code Online (Sandbox Code Playgroud)


Bil*_*oag 5

有关数据输入框,一个应该关注SQL注入攻击,溢出,坏的字符等,检查出类似的功能filter_var(),mysql_real_escape_string(),pg_escape_string()对于初学者.