PHP安全过滤函数

来源:互联网 发布:linux signal 编辑:程序博客网 时间:2024/05/18 00:00

在现代互联网中,我们经常要 从世界各地的用户中获得输入数据。但是,我们都知道“永远不能相信那些用户输入的数据”。之前做PHP开发的时候,小网站、低需求,也产生了几个不安全的开发作品。PHP的安全过滤函数的使用可以有效的防止像sql攻击、xss攻击的问题。现在恶补安全过滤函数这一块,看了一些php项目安全性的博客,整理了此篇文章。


1.htmlspecialchars(string, flag, encoding)

使用这个函数会把字符串转换为HTML实体(html实体不理解可以参看 http://www.w3school.com.cn/html/html_entities.asp);

众所周知像 双引号“,单引号‘,在操作对数据表进行操作的时候是很危险的。而使用htmlsprcialchars后,双引号就会变成",单引号就变成'


$var = '"mysql';$var_after = htmlspecialchars($var);var_dump($var_after);输出显示:
string '"mysql' (length=11)


$var = "'mysql";$var_after = htmlspecialchars($var, ENT_QUOTES); //第二个参数ENT_QUOTES,双引号和单引号都编码。var_dump($var_after);输出显示:
string ''mysql' (length=11)

& (和号)成为 &

" (双引号)成为 "

' (单引号)成为 '

< (小于)成为 <

> (大于)成为 >


2.htmlentities(string, flag, encoding)

htmlentities和htmlsprcialchars的使用和效果都比较类似,htmlsprcialchars只是转换以上几种特殊字符,而htmlentities转换全部的字符。

需要额外说明的一点在于使用htmlentities处理中文的时候第三个参数encoding,要使用正确的编码,否则会出现乱码。一般来说使用htmlsprcialchars转换基本字符就已经足够了。


3.strip_tags(string, allow)

strip_tags() 函数剥去字符串中的 HTML、XML 以及 PHP 的标签。

第二个参数allow,允许出现的标签;

$var='<a href="test.html"><b>测试页面</b></a>';

$var_after = strip_tags($var);
var_dump($var_after);
$var_second = strip_tags($var, '<b>');var_dump($var_second);

输出:
string '测试页面' (length=12)
string '<b>测试页面</b>' (length=19)

4.stripslashes(string)
删除反斜杠,不多说。


另外还有像intval,md5等函数,在程序中合理使用都可以起到很好的效果。

1 0
原创粉丝点击