Heim >Backend-Entwicklung >PHP-Tutorial >php表单安全过滤究竟要怎么做?

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

WBOY
WBOYOriginal
2016-07-06 13:51:49920Durchsuche

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

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

回复内容:

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

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

  • 表单层验证。页面上输入的能用js验证的就验证,js也有很多验证不同字符的函数,根据情况而定

  • 程序层验证。主要考虑在SQL方面了,当然了PHP里面对于字符处理很多函数,根据自己的需求用不同的函数即可

提供个防SQL注入的小方法

<code>    /**
     * 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;
    }</code>

当然了,如果你用的PDO的话,PDO预处理可以有效的防止SQL注入

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

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

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

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

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

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn