php 一些基本安全处理技巧
发布:smiling 来源: PHP粉丝网 添加日期:2014-08-23 16:06:23 浏览: 评论:0
对于一些常见的输出目标(包括客户端、数据库教程和URL)的转义,PHP 中有内置函数可用.
如果你要写一个自己算法,做到万无一失很重要,需要找到在外系统中特殊字符的可靠和完整的列表,以及它们的表示方式,这样数据是被保留下来而不是转译了.
最常见的输出目标是客户机,使用htmlentities( )在数据发出前进行转义是最好的方法,与其它字符串函数一样,它输入是一个字符串,对其进行加工后进行输出,但是使用htmlentities( )函数的最佳方式是指定它的两个可选参数:引号的转义方式(第二参数)及字符集(第三参数),引号的转义方式应该指定为ENT_QUOTES,它的目的是同时转义单引号和双引号,这样做是最彻底的,字符集参数必须与该页面所使用的字符集相必配.
为了区分数据是否已转义,我还是建议定义一个命名机制,对于输出到客户机的转义数据,我使用$html 数组进行存储,该数据首先初始化成一个空数组,对所有已过滤和已转义数据进行保存,实例代码如下:
- <?php
- $html = array( );
- $html['username'] = htmlentities($clean['username'], ENT_QUOTES, 'UTF-8');//开源代码phpfensi.com
- echo "<p>Welcome back, {$html['username']}.</p>";
- ?>
小提示:htmlspecialchars( )函数与htmlentities( )函数基本相同,它们的参数定义完全相同,只不过是htmlentities( )的转义更为彻底,通过$html['username']把username 输出到客户端,你就可以确保其中的特殊字符不会被浏览器所错误解释,如果username 只包含字母和数字的话,实际上转义是没有必要的,但是这体现了深度防范的原则,转义任何的输出是一个非常好的习惯,它可以戏剧性地提高你的软件的安全性.
另外一个常见的输出目标是数据库,如果可能的话,你需要对SQL 语句中的数据使用PHP内建函数进行转义,对于MySQL 用户,最好的转义函数是mysql_real_escape_string(),如果你使用的数据库没有PHP 内建转义函数可用的话,addslashes( )是最后的选择.
下面的例子说明了对于MySQL 数据库的正确的转义技巧:
- <?php
- $mysql = array( );
- $mysql['username'] = mysql_real_escape_string($clean['username']);
- $sql = "SELECT *
- FROM profile
- WHERE username = '{$mysql['username']}'";
- $result = mysql_query($sql);
- ?>
Tags: php安全 php处理技巧
相关文章
- ·在PHP中全面阻止SQL注入式攻击(2013-11-13)
- ·php中open_basedir存在安全隐患(2014-08-22)
- ·php安全,防止sql注入攻击简单方法(2014-08-23)
- ·php中一些安全性防止问题建议(2014-08-23)
- ·php安全配置详细说明(2014-08-25)
- ·PHP代码安全性问题的建议(2014-08-25)
- ·php安全过滤与实例教程(2014-08-25)
- ·高手整理的PHP+MySQL安全方案(2015-04-09)
- ·PHP安全的URL字符串base64编码和解码(2021-02-22)
- ·浅谈php安全性需要注意的几点事项(2021-03-21)
- ·php解决安全问题的方法实例(2021-12-19)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)