为了账号安全,请及时绑定邮箱和手机立即绑定

PHP如何安全地使用$_GET

PHP如何安全地使用$_GET

PHP
噜噜哒 2018-10-03 16:15:55
本人新手,在《PHP安全编码》中提到“不要直接使用$_GET”,同时又提到“可以尝试在php.ini中开启magic_quotes_gpc,这样对于所有由用户GET、POST、COOKIE中传入的特殊字符都会转义”,我很纠结,是否开启magic_quotes_gpc就可以直接使用$_GET?如下面例子中的代码本人感觉很不安全,因为没有做验证,但又不知道如何改进,希望大神能帮忙,谢谢。<?php    $name = $_GET["name"];    $user = $_GET["user"];    mysql_query("SELECT $name FROM $user");
查看完整描述

2 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

1. 像用户名这种有格式的东西,应该取到之后马上用正则表达式验证,比如preg_match('/\A\w{6,14}\z/', $user)就验证了它是不是6~14位的数字字母下划线。不要使用系统自带的filter,那个管不了什么用。

2. 不要使用mysql开头的函数,要使用mysqli,而且最好进行参数化查询而不是addslashes,后者会有编码问题。

3. 输出html的时候,默认使用htmlspecialchars,这个函数可以指定编码。或者你可以用现成的模板引擎。

4. 比较字符串的时候,强制使用strcmp,不要使用双等号。

5. 不要使用$_REQUEST

这样可以防掉95%。至于magic_quotes_gpc,应该早就废了吧。


查看完整回答
反对 回复 2018-10-11
  • 2 回答
  • 0 关注
  • 1140 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信