关于 Web 应用程序安全性必须认识到的第一件事是不应该信任外部数据外部数据(outside data) 包括不是由程序员在 PHP 代码中直接输入的任何数据在采取措施确保安全之前来自任何其他来源(比如 GET 变量表单 POST数据库配置文件会话变量或 cookie)的任何数据都是不可信任的
例如下面的数据元素可以被认为是安全的因为它们是在 PHP 中设置的PHP安全防护清单 安全无暇的代码
/**
* PHP安全防护要点简析
*
* @param
* @arrange 512-笔记网: jb51.cc
**/
$myUsername=‘tmyer’;
$arrayarrayUsers=array
(’tmyer’‘tom’‘tommy’); define(”GREETING”‘hello
there’$myUsername);
/*** 来自编程之家 jb51.cc(jb51.cc) ***/
但是下面的数据元素都是有瑕疵的
PHP安全防护清单 不安全有瑕疵的代码
/**
* PHP安全防护要点简析
*
* @param
* @arrange 512-笔记网: jb51.cc
**/
$myUsername=$_POST[’username’];
//tainted!
$arrayarrayUsers=array($my
Username‘tom’‘tommy’);
//tainted! define(”GREETING”‘hellothere’
$myUsername);//tainted!
/*** 来自编程之家 jb51.cc(jb51.cc) ***/
为 什么第一个变量 $myUsername 是有瑕疵的?因为它直接来自表单 POST用户可以在这个输入域中输入任何字符串包括用来清除文件或运行以前上传的文件的恶意命令
您可能会问“难道不能使用只接受字母 AZ 的客户端(Javascrīpt)表单检验脚本来避免这种危险吗?”是的这总是一个有好处的步骤但是正如在后面会看到的任何人都可以将任何表单下载 到自己的机器上修改它然后重新提交他们需要的任何内容
解决方案很简单必须对 $_POST[’username’] 运行清理代码如果不这么做那么在使用 $myUsername 的任何其他时候(比如在数组或常量中)就可能污染这些对象
对用户输入进行清理的一个简单方法是使用正则表达式来处理它在这个示例中只希望接受字母将字符串限制为特定数量的字符或者要求所有字母都是小写的这可能也是个好主意
PHP安全防护清单 使用户输入变得安全
/**
* PHP安全防护要点简析
*
* @param
* @arrange 512-笔记网: jb51.cc
**/
$myUsername=cleanInput($_
POST[’username’]);//clean!
$arrayarrayUsers=array(
$myUsername‘tom’‘tommy’);//clean! define(”GREETING”‘hello
there’$myUsername);//clean!
functioncleanInput($input){ $clean=strtolower($input);
$clean=preg_replace(”/[^az]
/”“”$clean); $clean=substr($clean);
return$clean; }
/*** 来自编程之家 jb51.cc(jb51.cc) ***/
以上就是PHP安全防护的相关技巧讲解 原文链接:https://www.f2er.com/php/528228.html