8个与安全相关的PHP函数

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(),因为这样会导致 双层转义。你可以通过PHP中get_magic_quotes_gpc()函数检查这个变量的值。

3. htmlentities()

这个函数对过滤用户输入数据非常有用,它可以把字符转换为 HTML 实体。比如,当用户输入字符“<”时,就会被该函数转化为HTML实体<,因此防止了XSS和SQL注入攻击。

4. htmlspecialchars()

HTML中的一些字符有着特殊的含义,如果要体现这样的含义,就要被转换为HTML实体,这个函数会返回转换后的字符串,比如,‘&’amp会转为‘&’。

5. strip_tags()

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

6. md5()

一些开发者存储的密码非常简单,这从安全的角度上看是不好的,md5()函数可以产生给定字符串的32个字符的md5散列,而且这个过程不可逆,即你不能从md5()的结果得到原始字符串。 7. sha1()

这个函数和上面的md5()相似,但是它使用了不同的算法,产生的是40个字符的SHA-1散列(md5产生的是32个字符的散列)。

8. intval()

不要笑,我知道这不是一个和安全相关的函数,它是在将变量转成整数类型。但是,你可以用这个函数让你的PHP代码更安全,特别是当你在解析id,年龄这样的数据时。

原文:http://www.pixelstech.net/article/1300722997-Useful-functions-to-provide-secure-PHP-application 译文:http://www.php100.com/html/it/focus/2014/1031/7679.html (翻译:PHP100_Zeroing)

原文发布于微信公众号 - php(phpdaily)

原文发表时间:2014-11-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏cs

c++那些事儿7.0 I/O流,文件操作

知识点综述: ---- C++ I/O: 在iostream头文件中定义 istream //通用输入流和其它输入流基类。 ...

3267
来自专栏竹清助手

Juicer 中文文档

我们可以配置一些参数选项,包括 cache、 strip、 errorhandling、 detection;其默认值都是 tru...

723
来自专栏个人分享

Redis常用命令

使用sadd创建集合 使用smembers 查询集合,使用srem删除集合中的元素 使用sismember查询集合中是否包含有此元素,有的话则返回1 没有返回0

762
来自专栏运维小白

linux基础(day26)

9.1正则介绍_grep(上) 正则介绍 正则就是一串有规律的字符串 掌握好正则对编写shell脚本帮助交大 各种编程语言中都有正则,原理是一样的 grep/e...

20010
来自专栏Redis

Redis数据类型之hashes类型

2、hsetnx 设置hash field为指定值,如果key不存在,则先创建。如果field已经存在,返回0,nx是not exist的意思。

890
来自专栏智能合约

PHP魔术方法之__set()和__get()

1193
来自专栏决胜机器学习

PHP面向对象核心(三)——反射、异常处理

PHP面向对象核心(三) (原创内容,转载请注明来源,谢谢) 五、反射 1、反射即PHP运行过程中,提取出关于类、方法、属性、参数等信息,包括 注释信息。动态获...

30212
来自专栏Laoqi's Linux运维专列

MongoDB 操作配置

3074
来自专栏运维小白

9.6 awk(上)

awk工具 head -n2 test.txt|awk -F ':' '{print $1}' head -n2 test.txt|awk -F ':' '{p...

1677
来自专栏架构师小秘圈

shell极简教程(二)

一,题记 不懂shell的程序员不是好程序员,学习shell是为了自动化,使用自动化可以非常有效的提高工作效率。没有一个大公司不要求linux的基本技能的,只是...

3547

扫描关注云+社区