PHP   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了PHP开发安全问题总结大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

  PHP给了开发者极大的灵活性,但是这也为安全问题带来了潜在的隐患,近期需要总结一下以往的问题,在这里借翻译一篇文章同时加上自己开发的一些感触总结一下。

PHP开发安全问题总结

 简介

  当开发一个互联网服务的时候,必须时刻牢记安全观念,并在开发的代码中体现。PHP脚本语言对安全问题并不关心,特别是对大多数没有经验的开发者来说。每当你讲任何涉及到钱财事务等交易问题时,需要特别注意安全问题的虑,例如开发一个论坛或者是一个购物车等。

 安全保护一般性要点

  • 不相信表单

  对于一般的Javascript前台验证,由于无法得知用户的行为,例如关闭了浏览器的javascript引擎,这样通过POST恶意数据到服务器。需要在服务器端进行验证,对每个PHP脚本验证传递到的数据,防止XSS攻击和sql注入

  要假设你的网站接收的每一条数据都是存在恶意代码的,存在隐藏的威胁,要对每一条数据都进行清理

  在PHP.ini文件进行以下配置:

register_globals = Off

  如果这个配置选项打开之后,会出现很大的安全隐患。例如有一个process.PHP的脚本文件,会将接收到的数据插入到数据库,接收用户输入数据的表单可能如下:

<input name="username" type="text" size="15" maxlength="64">

  这样,当提交数据到process.PHP之后,PHP注册一个$username变量,将这个变量数据提交到process.PHP,同时对于任何POST或GET请求参数,都会设置这样的变量。如果不是显示进行初始化那么就会出现下面的问题:

<?PHP
// Define $authorized = true only if user is authenticated
if (authenticated_user()) {
    $authorized = true;
}
?>

  此处,假设authenticated_user函数就是判断$authorized变量的值,如果开启了register_globals配置,那么任何用户都可以发送一个请求,来设置$authorized变量的值为任意值从而就能绕过这个验证。

  所有的这些提交数据都应该通过PHP预定义内置的全局数组来获取包括$_POST、$_GET、$_FILES、$_SERVER、$_requEST等,其中$_requEST是一个$_GET/$_POST/$_COOKIE三个数组的联合变量,认的顺序是$_COOKIE、$_POST、$_GET。

  • 推荐的安全配置选项

  error_reporTing设置为Off:不要暴露错误信息给用户,开发的时候可以设置为ON

  safe_mode设置为Off

  register_globals设置为Off

  将以下函数禁用:system、exec、passthru、sHell_exec、proc_open、popen

  open_basedir设置为 /tmp ,这样可以让session信息有存储权限,同时设置单独的网站根目录

  expose_PHP设置为Off

  allow_url_fopen设置为Off

  allow_url_include设置为Off

 sql注入攻击

  对于操作数据库sql语句,需要特别注意安全性,因为用户可能输入特定语句使得原有的sql语句改变了功能。类似下面的例子:
本图文内容来源于网友网络收集整理提供,作为学习参使用,版权属于原作者。

大佬总结

以上是大佬教程为你收集整理的PHP开发安全问题总结全部内容,希望文章能够帮你解决PHP开发安全问题总结所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: