php专区

 首页 > php专区 > PHP进阶 > 方法&架构 > php一些基本安全处理技巧_PHP教程

php一些基本安全处理技巧_PHP教程

分享到:
【字体:

对于一些常见的输出目标(包括客户端、数据库教程和URL)的转义,PHP 中有内置函数可用。
如果你要写一个自己算法,做到万无一失很重要。需要找到在外系统中特殊字符的可靠和完整的列表,以及它们的表示方式,这样数据是被保留下来而不是转译了。
最常见的输出目标是客户机,使用htmlentities( )在数据发出前进行转义是最好的方法。与其它字符串函数一样,它输入是一个字符串,对其进行加工后进行输出。但是使用htmlentities( )函数的最佳方式是指定它的两个可选参数:引号的转义方式(第二参数)及字符集(第三参数)。引号的转义方式应该指定为ENT_QUOTES,它的目的是同时转义单引号和双引号,这样做是最彻底的,字符集参数必须与该页面所使用的字符集相必配。
为了区分数据是否已转义,我还是建议定义一个命名机制。对于输出到客户机的转义数据,我使用$html 数组进行存储,该数据首先初始化成一个空数组,对所有已过滤和已转义数据进行保存。
$html = array( );
$html['username'] = htmlentities($clean['username'], ENT_QUOTES, 'UTF-8');
echo "

Welcome back, {$html['username']}.

";
?>

小提示
htmlspecialchars( )函数与htmlentities( )函数基本相同,它们的参数定义完全相同,只不过是htmlentities( )的转义更为彻底。通过$html['username']把username 输出到客户端,你就可以确保其中的特殊字符不会被浏览
器所错误解释。如果username 只包含字母和数字的话,实际上转义是没有必要的,但是这体现了深度防范的原则。转义任何的输出是一个非常好的习惯,它可以戏剧性地提高你的软件的安全性。
另外一个常见的输出目标是数据库。如果可能的话,你需要对SQL 语句中的数据使用PHP内建函数进行转义。对于MySQL 用户,最好的转义函数是mysql教程_real_escape_string( )。如果你使用的数据库没有PHP 内建转义函数可用的话,addslashes( )是最后的选择。
下面的例子说明了对于MySQL 数据库的正确的转义技巧:

$mysql = array( );
$mysql['username'] = mysql_real_escape_string($clean['username']);
$sql = "SELECT *
FROM profile
WHERE username = '{$mysql['username']}'";
$result = mysql_query($sql);
?>

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/629700.htmlTechArticle对于一些常见的输出目标(包括客户端、数据库教程和URL)的转义,PHP 中有内置函数可用。 如果你要写一个自己算法,做到万无一失很重...

分享到:
基础phpmysql防止sql攻击注入的办法_PHP...
我们利用了php教程自带的Magic Quotes来判断是否是开启了,如果是就strips教程lashes否则就用mysql教程_real_escape_string来过滤 //如果Magic Quotes功用启用 if (get_magic_quotes_gpc()) { $name = stripslashes($name); }else{ $name = mysql_real_escape_string($name); } mysql_query("SELECT * FROM users WHER...
phpgzinflate无限加密与解决代码_PHP教程
PHP使用eval(gzinflate(str_rot13(base64_decode(‘BASE64加密后内容’))))核心代码的解密 下非扩展方式的php教程加密方法: 这里有个在线的,还不错。木马防杀还行,要保护代码可就不行了。 对应的写了一个简单的解密的, 专门针对eval。这个原理很有用途。 特别说明:此解密程序好像一定得在PHP5上面使用, 我在PHP4上面测...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……