PHP开发安全问题之校验请求变量

01 获取请求变量

  • 01.01 $\_GET

  • 01.02 $\_POST

  • 01.03 $\_REQUEST

02 校验请求变量

  • 02.01 使用 filter_var 函数

  • 02.02 自定义校验函数

在使用 PHP 开发互联网服务时,开发人员需要时刻牢记安全观念,尤其是涉及到钱财事务等交易问题时,更需如此。

当我们需要通过 PHP 获取用户的请求参数时,就会用到预定义内置全局变量来获取,包括$_POST、$_GET、$_FILES、$_SERVER、$_REQUEST等,其中$_REQUEST是一个包含$_GET/$_POST/$_COOKIE三个数组值的联合变量。

注意:当开启了 register_globals 设置后,用户传递过来的值会被直接注册为全局变量而直接使用,这会造成全局变量覆盖问题。不过自 PHP 4.2.0 开始,该变量的默认值已经从 On 改为 Off 了。

01 获取请求变量

01.01 $_GET

$_GET 变量用于收集来自 method=”get” 的表单中的值。这些值能够很直观地在浏览器的地址栏里看到。

https://www.aleshu.com/lightcontent-detail/?postAlias=a977b4566d6662638bc498199ab19a4e

其中,postAlias就是一个 method=”get” 的参数,其值为a977b4566d6662638bc498199ab19a4e。

缺点:

  • 不能使用这种方式发送敏感信息;

  • 不适合很长的变量值,不超过100个字符。

01.02 $_POST

$_POST 变量用于收集来自 method=”post” 的表单中的值。

从带有 POST 方法的表单发送的信息,对任何人都是不可见的(不会显示在浏览器的地址栏),并且对发送信息的量也没有限制。

注意:默认情况下,POST 方法的发送信息的量最大值为 8 MB(可通过设置 php.ini 文件中的 post_max_size 进行更改)。

01.03 $_REQUEST

$_REQUEST 包含了 $_GET、$_POST 和 $_COOKIE 的内容,可用来收集通过 GET 和 POST 方法发送的表单数据。

... ...

校验请求变量 - 乐述云享 (aleshu.com)

【社群】PHP开发(安全问题) - 乐述云享 (aleshu.com)