zoukankan      html  css  js  c++  java
  • 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 ?>
  • 相关阅读:
    delphi point数据类型
    Sql Server 2008 R2链接服务器Oracle数据库
    ORA-28000 账号被锁定的解决办法
    [Oracle] sqlplus / as sysdba ora-01031 insufficient privileges
    Oracle的操作系统认证(/ as sydba 登录方式)
    Delphi使用线程TThread查询数据库
    oracle
    统计字符串中字符出现的次数-Python
    Jmeter保存下载的文件
    如何在Microsoft Store上免费获得 HEIF、HEVC 编码支持
  • 原文地址:https://www.cnblogs.com/jami918/p/3201118.html
Copyright © 2011-2022 走看看