• PHP安全编程:对输出要进行转义


    为了区分数据是否已转义,我还是建议定义一个命名机制。对于输出到客户机的转义数据,我使用$html数组进行存储,该数据首先初始化成一个空数组,对所有已过滤和已转义数据进行保存。

    1 <?php
    2   
    3   $html = array(  );
    4   $html['username'] = htmlentities($clean['username'], ENT_QUOTES, 'UTF-8');
    5   echo "<p>Welcome back, {$html['username']}.</p>";
    6  
    7 ?>

    htmlspecialchars( )函数与htmlentities( )函数基本相同,它们的参数定义完全相同,只不过是htmlentities( )的转义更为彻底。

    通过$html['username']把username输出到客户端,你就可以确保其中的特殊字符不会被浏览器所错误解释。如果 username只包含字母和数字的话,实际上转义是没有必要的,但是这体现了深度防范的原则。转义任何的输出是一个非常好的习惯,它可以戏剧性地提高你 的软件的安全性。

    另外一个常见的输出目标是数据库。如果可能的话,你需要对SQL语句中的数据使用PHP内建函数进行转义。对于MySQL用户,最好的转义函数是 mysql_real_escape_string( )。如果你使用的数据库没有PHP内建转义函数可用的话,addslashes( )是最后的选择。

    下面的例子说明了对于MySQL数据库的正确的转义技巧:

    01 <?php
    02   
    03   $mysql = array();
    04   $mysql['username'] = mysql_real_escape_string($clean['username']);
    05   $sql = "SELECT *
    06           FROM   profile
    07           WHERE  username = '{$mysql['username']}'";
    08   $result = mysql_query($sql);
    09   
    10 ?>
  • 相关阅读:
    Python 循环嵌套
    python 通过序列索引迭代
    Python for 循环语句
    python 无限循环
    Python 循环语句
    Python 条件语句
    Python运算符优先级
    Python身份运算符
    Python成员运算符
    Python逻辑运算符
  • 原文地址:https://www.cnblogs.com/jami918/p/3201118.html
Copyright © 2020-2023  润新知