php表单安全过滤究竟要怎么做?
具体需要过滤什么才能做到安全?用什么函数?
用什么函数或方法过滤不和谐词语最合适?
最好给出一整套代码。片段看得太多,已经乱了。。。
回复内容:
网上好多方法,看来看去也不知道该用什么。
具体需要过滤什么才能做到安全?用什么函数?
用什么函数或方法过滤不和谐词语最合适?
最好给出一整套代码。片段看得太多,已经乱了。。。
表单层验证。页面上输入的能用
js
验证的就验证,js
也有很多验证不同字符的函数,根据情况而定程序层验证。主要考虑在
SQL
方面了,当然了PHP
里面对于字符处理很多函数,根据自己的需求用不同的函数即可
提供个防SQL注入的小方法
/**
* description 过滤转义POST|GET
*/
final public static function isEscape($val, $isboor = false) {
if (! get_magic_quotes_gpc ()) {
$val = addslashes ( $val );
}
if ($isboor) {
$val = strtr ( $val, array (
"%" => "\%",
"_" => "\_"
) );
}
return $val;
}
当然了,如果你用的PDO
的话,PDO
预处理可以有效的防止SQL
注入
1.防止表单重复提交,1.用表单令牌可以解决,2.点击提交按钮后,立即禁用button按钮
2.防止表单提交多余的数据, PHP 接收POST的时候,需要过滤,哪些是表单的,哪些的用户构造的
3.防止SQL注入,进行类型强制转换和采用PDO绑定参数方式操作数据库(参见thinkphp数据库类)
4.防止XSS攻击,需要过滤掉
你要问代码的话, 问问题千万不要直接要代码,只能你贴出你的代码,让我们帮你排错,拒绝伸手党,肯定是没有的,这都是结合各个优秀的框架和开源项目积累总结的
代码的话,可能要写好久好久
首先在客户端通过JS进行初步数据过来是有效的手段,但是请注意,一切在客户端进行的验证都是非安全的,都是可以绕过的
然后是在代码层进行数据过滤,例如php有些函数可以用来进行一些简单的过滤操作:
strip_tags 可以去掉文本内容中的所有html标签
htmlspecialchars 可以对文本内容中的html标签进行转义
addslashes 可以对内容中的特殊符号进行转义
这些函数可以进行初步过滤,然后具体的内容就需要自己编写相应的规则了,例如清除js代码或者其他的敏感词汇,需要自己编写对应的正则进行替换
最后则是在执行sql时进行一些安全操作,如pdo的预处理等
推荐阅读