PHP良好实践 --过滤验证和转义

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mu_mu111/article/details/84306234

PHP良好实践 --过滤验证和转义

过滤输入、验证数据、转义输出

  • $_GET
  • $_POST
  • $_REQUETS
  • $_COOKIE
  • $arvg
  • php://stdin
  • php://intput
  • file_get_content()
  • 远程数据库
  • 远程API
  • 来自客户端的数据

过滤输入

  1. HTML 输入过滤
  • 在外部数据到达引用存储层之前,一定要过滤输入数据
  • 使用htmlentities()函数(http://php.net/manual/zh/function.htmlentities.php)过滤html, 把特殊字符转换成对应的HTML实体
    <?php
    $input = '<p><script>alert("hello world")</script></p>';
    echo htmlentities($input, ENT_QUOTES, 'UTF-8');
    输出:
    &lt;p&gt;&lt;script&gt;alert(&quot;hello world&quot;)&lt;/script&gt;&lt;/p&gt;
    
  1. SQL 查询
  • 使用 PDO预处理语句 对SQL进行过滤,防止sql注入
        $dbh = new PDO('mysql:host=localhost;dbname=test', 'root', 'root');
    
        $stmt = $dbh->prepare("UPDATE LEFT_TABLE SET lname = :lname WHERE lid = :lname");
        $stmt->bindParam(':lid', $lid);
        $stmt->bindParam(':lname', $lname);
    
        $lid = '10';
        $lname = 'ten";--';
        $stmt->excute();
    
        $stmt = null;
    
  1. 用户资料信息
  • filter_var()filter_input() 函数 能够使用不同的的参数过滤不同类型的输入:电子邮件地址、URL编码字符串、整数、浮点数、HTML字符、URL和特定范围内的ASCII字符

验证数据

  • 我们可以使用filter_var() 函数对数据进行验证

转义输出

将数据渲染为网页或者API响应时,一定要转义输出。
可以使用htmlentities()进行转义输出。

猜你喜欢

转载自blog.csdn.net/mu_mu111/article/details/84306234