PHP里8个鲜为人知的安全函数分析


Posted in PHP onDecember 09, 2014

本文实例讲述了PHP里8个鲜为人知的安全函数。分享给大家供大家参考。具体分析如下:

安全是编程非常重要的一个方面。在任何一种编程语言中,都提供了许多的函数或者模块来确保程序的安全性。在现代网站应用中,经常要获取来自世界各地用户的输入,但是,我们都知道“永远不能相信那些用户输入的数据”。所以在各种的Web开发语言中,都会提供保证用户输入数据安全的函数。这里我们就来看看,在著名的开源语言PHP中有哪些有用的安全函数。

在PHP中,有些很有用的函数开源非常方便的防止你的网站遭受各种攻击,例如SQL注入攻击,XSS(Cross Site Scripting:跨站脚本)攻击等。一起看看PHP中常用的、可以确保项目安全的函数。注意,这并不是完整的列表,是我觉得对于你的i项目很有的一些函数。

1. mysql_real_escape_string()

这个函数在PHP中防止SQL注入攻击时非常有用。这个函数会对一些例如单引号、双引号、反斜杠等特殊字符添加一个反斜杠以确保在查询这些数据之前,用户提供的输入是干净的。但要注意,你是在连接数据库的前提下使用这个函数。
但是现在已经不推荐使用mysql_real_escape_string()了,所有新的应用应该使用像PDO一样的函数库执行数据库操作,也就是说,我们可以使用现成的语句防止SQL注入攻击。

2. addslashes()

这个函数的原理跟mysql_real_escape_string()相似。但是当在php.ini文件中,“magic_quotes_gpc“的值是“on”的时候,就不要使用这个函数。magic_quotes_gpc 的默认值是on,对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。你可以使用get_magic_quotes_gpc()函数来确定它是否开启。

3. htmlentities()

这个函数对于过滤用户输入的数据非常有用。它会将一些特殊字符转换为HTML实体。例如,用户输入<时,就会被该函数转化为HTML实体<(<),输入>就被转为实体>.

4. htmlspecialchars()

在HTML中,一些特定字符有特殊的含义,如果要保持字符原来的含义,就应该转换为HTML实体。这个函数会返回转换后的字符串,例如'&' (ampersand) 转为'&'

ps:此处原文有误,在此非常感谢瑾瑜  提出。现已更正,另外附上此函数常见的转换字符:

The translations performed are:
 '&' (ampersand) becomes '&'
 '”' (double quote) becomes '"' when ENT_NOQUOTES is not set.
 “'” (single quote) becomes ''' (or ') only when ENT_QUOTES is set.
 '<' (less than) becomes '<'
 '>' (greater than) becomes '>'

5. strip_tags()

这个函数可以去除字符串中所有的HTML,JavaScript和PHP标签,当然你也可以通过设置该函数的第二个参数,让一些特定的标签出现。

6. md5()

从安全的角度来说,一些开发者在数据库中存储简单的密码的行为并不值得推荐。md5()函数可以产生给定字符串的32个字符的md5散列,而且这个过程不可逆,即你不能从md5()的结果得到原始字符串。
现在这个函数并不被认为是安全的,因为开源的数据库可以反向检查一个散列值的明文。你可以在这里找到一个MD5散列数据库列表

7. sha1()

这个函数与md5()类似,但是它使用了不同的算法来产生40个字符的SHA-1散列(md5产生的是32个字符的散列)。也不要把绝对安全寄托在这个函数上,否则会有意想不到的结果。

8. intval()

先别笑,我知道这个函数和安全没什么关系。intval()函数是将变量转成整数类型,你可以用这个函数让你的PHP代码更安全,特别是当你在解析id,年龄这样的数据时。

此处附上英文原文地址:http://www.pixelstech.net/article/1300722997-Useful-functions-to-provide-secure-PHP-application

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
php的字符串用法小结
Jun 08 PHP
php下关于Cannot use a scalar value as an array的解决办法
Aug 08 PHP
php之Memcache学习笔记
Jun 17 PHP
php判断是否为json格式的方法
Mar 04 PHP
php中判断数组相等的方法以及数组运算符介绍
Mar 30 PHP
php中file_exists函数使用详解
May 08 PHP
浅析Yii2缓存的使用
May 10 PHP
CI框架出现mysql数据库连接资源无法释放的解决方法
May 17 PHP
php获取当前月与上个月月初及月末时间戳的方法
Dec 05 PHP
PHP简单实现二维数组的矩阵转置操作示例
Nov 24 PHP
tp5.1 框架路由操作-URL生成实例分析
May 26 PHP
PHP实现两种排课方式
Jun 26 PHP
php实现MySQL数据库备份与还原类实例
Dec 09 #PHP
两个php日期控制类实例
Dec 09 #PHP
php中Ctype函数用法详解
Dec 09 #PHP
完美解决thinkphp验证码出错无法显示的方法
Dec 09 #PHP
thinkphp缓存技术详解
Dec 09 #PHP
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
Dec 09 #PHP
php生成shtml类用法实例
Dec 09 #PHP
You might like
PHP 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
2010/04/28 PHP
二招解决php乱码问题
2012/03/25 PHP
php简单定时执行任务的实现方法
2015/02/23 PHP
php给每个段落添加空格的方法
2015/03/20 PHP
从性能方面考虑PHP下载远程文件的3种方法
2015/12/29 PHP
js验证表单大全
2006/11/25 Javascript
用js实现上传图片前的预览(TX的面试题)
2007/08/14 Javascript
JavaScript 加号(+)运算符号
2009/12/06 Javascript
javascript面向对象编程(一) 实例代码
2010/06/25 Javascript
javascript制作的网页侧边弹出框思路及实现代码
2014/05/21 Javascript
Extjs Label的 fieldLabel和html属性值对齐的方法
2014/06/15 Javascript
Javascript保存网页为图片借助于html2canvas库实现
2014/09/05 Javascript
使用百度地图api实现根据地址查询经纬度
2014/12/11 Javascript
easyui Draggable组件实现拖动效果
2015/08/19 Javascript
bootstrap datepicker限定可选时间范围实现方法
2016/09/28 Javascript
详解vue2.0 transition 多个元素嵌套使用过渡
2017/06/19 Javascript
javaScript中封装的各种写法示例(推荐)
2017/07/03 Javascript
关于ES6箭头函数中的this问题
2018/02/27 Javascript
解决vue 更改计算属性后select选中值不更改的问题
2018/03/02 Javascript
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
2018/04/26 jQuery
layer.open回调获取弹出层参数的实现方法
2019/09/10 Javascript
[08:54]DOTA2-DPC中国联赛 正赛 Aster vs LBZS 选手采访
2021/03/11 DOTA
Python基础入门之seed()方法的使用
2015/05/15 Python
浅谈Python实现贪心算法与活动安排问题
2017/12/19 Python
python利用微信公众号实现报警功能
2018/06/10 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
2019/04/11 Python
Python面向对象总结及类与正则表达式详解
2019/04/18 Python
Python使用itchat 功能分析微信好友性别和位置
2019/08/05 Python
pytorch 实现打印模型的参数值
2019/12/30 Python
python 对xml解析的示例
2021/02/27 Python
10 套华丽的CSS3 按钮小结
2012/10/03 HTML / CSS
详解HTML5.2版本带来的修改
2020/05/06 HTML / CSS
加拿大鞋网:Globo Shoes
2019/12/26 全球购物
巴西网上药店:Drogaria Araujo
2021/01/06 全球购物
2015员工年度考核评语
2015/03/25 职场文书
社区结对共建协议书
2016/03/23 职场文书