php限制用户输入,php不能信任的用户输入.安全处理用户输入

在编程世界中不能信任用户输入

$a=$_POST['username'];

?>

1

2

3

4

5

$a=$_POST['username'];

?>

变量 $a直接来自表单 POST。用户可以在这个输入域中输入任何字符串,包括用来清除文件或运行以前上传的文件的恶意命令。您可能会问,“难道不能使用只接受字母 A-Z 的客户端(Javascrīpt)表单检验脚本来避免这种危险吗?”是的,这总是一个有好处的步骤,但是正如在后面会看到的,任何人都可以将任何表单下载 到自己的机器上,修改它,然后重新提交他们需要的任何内容。

解决方案很简单:必须对 $_POST[‘username’] 运行清理代码。如果不这么做,那么在使用 $a 的任何其他时候(比如在数组或常量中),就可能污染这些对象。

对用户输入进行清理的一个简单方法是,使用正则表达式来处理它。在这个示例中,只希望接受字母。将字符串限制为特定数量的字符,或者要求所有字母都是小写的,这可能也是个好主意。

使用户输入变得安全

$a=$_POST['username'];

function cleanInput($input){

$clean = strtolower($input);

$clean = preg_replace(”/[^a-z]/”, “”, $clean);

$clean = substr($clean,0,12);

return $clean;

}

?>

1

2

3

4

5

6

7

8

9

$a=$_POST['username'];

functioncleanInput($input){

$clean=strtolower($input);

$clean=preg_replace(”/[^a-z]/”,“”,$clean);

$clean=substr($clean,0,12);

return$clean;

}

?>

已经知道了不能信任用户输入,还应该知道不应该信任机器上配置 PHP 的方式。例如,要确保禁用 register_globals。如果启用了 register_globals,就可能做一些粗心的事情,比如使用 $variable 替换同名的 GET 或 POST 字符串。通过禁用这个设置,PHP 强迫您在正确的名称空间中引用正确的变量。要使用来自表单 POST 的变量,应该引用 $_POST[‘variable’]。这样就不会将这个特定变量误会成 cookie、会话或 GET 变量。

一些开发人员使用奇怪的语法,或者将语句组织得很紧凑,形成简短但是含义模糊的代码。这种方式可能效率高,但是如果您不理解代码正在做什么,那么就无法决定如何保护它。

例如,您喜欢下面两段代码中的哪一段?

使代码容易得到保护

//obfuscated code

$input = (isset($_POST['username']) ? $_POST['username']:”);

//unobfuscated code

$input = ”;

if (isset($_POST['username'])){

$input = $_POST['username'];

}else{

$input = ”;

}

?>

1

2

3

4

5

6

7

8

9

10

11

//obfuscated code

$input=(isset($_POST['username'])?$_POST['username']:”);

//unobfuscated code

$input=”;

if(isset($_POST['username'])){

$input=$_POST['username'];

}else{

$input=”;

}

?>

还有mysql中sql 语句怎么处理呢 请关注mysql防注入

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值