• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP操作用户提交内容时需要注意的危险函数

php 搞代码 4年前 (2022-02-28) 23次浏览 已收录 0个评论

对于咱们的程序开发来说,用户的输出是解决安全性问题的第一大入口。为什么这么说呢?不论是SQL注入、XSS还是文件上传破绽,全副都和用户提交的输出参数无关。明天咱们不讲这些问题,咱们次要探讨上面对用户的输出,有一些危险的函数在未经验证的状况下是不能间接应用这些函数来进行操作的,比方:

<code class="php">include($g);

假如这个 $g 是用户提交的内容,咱们在未经验证的状况下间接应用这个参数来蕴含文件,咱们传递的参数为 ?g=/etc/passwd ,那么服务器上所有的用户帐号信息就很可能就间接泄露了。

另外,一些执行 shell 命令的函数还是极度危险的。

<code class="php">echo system($g);

当咱们传递的参数是 ?g=ls -la / 时,同样的服务器目录也展现了进去,这还仅仅是显示目录构造,如果应用其它更恐怖的命令结果将不堪设想。

同理,咱们常常会依据一些id或指定的文件名来操作文件,特地是在删除文件的时候,如果未加判断,那么也可能间接去删除某些十分重要的文件。

<code class="php">unlink('./' . $g);

咱们持续将 $g 结构为 ?g=../../../xxxx ,如果在权限容许的状况下,就能够删除各种系统文件。

对这些内容,其实在 PHP 的官网手册中就曾经给出了一些很好的倡议,咱们无妨来间接看看 PHP 手册中是如何说的。

很多 PHP 程序所存在的重大弱点并不是 PHP 语言自身的问题,而是编程者的安全意识不高而导致的。因而,必须时时留神每一段代码可能存在的问题,去发现非正确数据提交时可能造成的影响。

必须时常注意你的代码,以确保每一个从客户端提交的变量都通过适当的查看,而后问本人以下一些问题:

  • 此脚本是否只能影响所预期的文件?
  • 非正常的数据被提交后是否产生作用?
  • 此脚本能用于计划外的用处吗?
  • 此脚本是否和其它脚本联合起来做好事?
  • 是否所有的事务都被充沛记录了?

还能够思考敞开 register_globals,magic_quotes 或者其它使编程更不便但会使某个变量的合法性,起源和其值被搞乱的设置。在开发时,能够应用 error_reporting(E_ALL) 模式帮忙查看变量应用前是否有被查看或被初始化,这样就能够避免某些非正常的数据的挠乱了。

其实,只有能恪守这些倡议,大部分的平安问题都能失去解决。还是那句话,不能置信用户的任何输入,在测试的时候请做好各种验证,包含但不限于边界值、特殊符号、非凡命令、越界值、目录权限等。在非必要的状况下不要应用用户的输出作为蕴含文件、执行脚本及文件操作的间接参数,如果肯定要用的话千万要进行各种模式的过滤验证。

测试代码:
[https://github.com/zhangyue05…

参考文档:

https://www.php.net/manual/zh/security.variables.php

各自媒体平台均可搜寻【硬核项目经理】


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP操作用户提交内容时需要注意的危险函数

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址