php表单安全过滤究竟要怎么做?

lingyu
  • 138

网上好多方法,看来看去也不知道该用什么。
具体需要过滤什么才能做到安全?用什么函数?
用什么函数或方法过滤不和谐词语最合适?

最好给出一整套代码。片段看得太多,已经乱了。。。

回复
阅读 4.5k
4 个回答
✓ 已被采纳

首先在客户端通过JS进行初步数据过来是有效的手段,但是请注意,一切在客户端进行的验证都是非安全的,都是可以绕过的

然后是在代码层进行数据过滤,例如php有些函数可以用来进行一些简单的过滤操作:
strip_tags 可以去掉文本内容中的所有html标签
htmlspecialchars 可以对文本内容中的html标签进行转义
addslashes 可以对内容中的特殊符号进行转义

这些函数可以进行初步过滤,然后具体的内容就需要自己编写相应的规则了,例如清除js代码或者其他的敏感词汇,需要自己编写对应的正则进行替换

最后则是在执行sql时进行一些安全操作,如pdo的预处理等

她说她喜欢浪丶
  • 4.9k
1.防止表单重复提交,1.用表单令牌可以解决,2.点击提交按钮后,立即禁用button按钮
2.防止表单提交多余的数据, PHP 接收POST的时候,需要过滤,哪些是表单的,哪些的用户构造的
3.防止SQL注入,进行类型强制转换和采用PDO绑定参数方式操作数据库(参见thinkphp数据库类)
4.防止XSS攻击,需要过滤掉 <script> <iframe>等危险的HTML代码(参见thinkphp的 I 函数)
5.防止csrf攻击,每次进行增删查改之前,验证一个token 即可(参见Yii2的写法)

你要问代码的话, 问问题千万不要直接要代码,只能你贴出你的代码,让我们帮你排错,拒绝伸手党,肯定是没有的,这都是结合各个优秀的框架和开源项目积累总结的
代码的话,可能要写好久好久

coachmans
  • 4.6k
  • 表单层验证。页面上输入的能用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注入

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏