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

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()进行转义输出。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值