您的位置:首页 > 编程语言 > PHP开发

PHP中的安全函数

2016-01-12 11:28 609 查看
1.addslashes

addslashes返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与NUL(NULL字符)。一个使用addslashes()的例子是当你要往数据库中输入数据时。例如,将名字O'reilly插入到数据库中,这就需要对其进行转义。强烈建议使用DBMS指定的转义函数(比如MySQL是mysqli_real_escape_string(),PostgreSQL是pg_escape_string()),但是如果你使用的DBMS没有一个转义函数,并且使用\来转义特殊字符,你可以使用这个函数。仅仅是为了获取插入数据库的数据,额外的\并不会插入。当PHP指令magic_quotes_sybase被设置成on时,意味着插入'时将使用'进行转义。PHP5.4之前PHP指令magic_quotes_gpc默认是on,实际上所有的GET、POST和COOKIE数据都用被addslashes()了。不要对已经被magic_quotes_gpc转义过的字符串使用addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数get_magic_quotes_gpc()进行检测。stripslashes为addslashes的unescape函数

2.htmlspecialchars

htmlspecialchars把HTML中的几个特殊字符转义成HTMLEntity(格式:&xxxx;)形式,包括(&),('),("),(<),(>)五个字符。

&(AND)=>&
”(双引号)=>"(当ENT_NOQUOTES没有设置的时候)
‘(单引号)=>'(当ENT_QUOTES设置)
<(小于号)=><
>(大于号)=>>

htmlspecialchars可以用来过滤GET,POST,$COOKIE数据,预防XSS。注意htmlspecialchars函数只是把认为有安全隐患的HTML字符进行转义,
如果想要把HTML所有可以转义的字符都进行转义的话请使用htmlentities。

htmlspecialchars_decode为htmlspecialchars的decode函数


3.htmlentities

htmlentities把HTML中可以转义的内容转义成HTMLEntity。html_entity_decode为htmlentities的decode函数。




4.mysql_real_escape_string

mysql_real_escape_string会调用MySQL的库函数mysql_real_escape_string,对(\x00),(\n),(\r),(\),(‘),(\x1a)进行转义,
即在前面添加反斜杠(),预防SQL注入。注意你不需要在读取数据库数据的时候调用stripslashes来进行unescape,因为这些反斜杠是在数据库执行SQL的时候添加的,
当把数据写入到数据库的时候反斜杠会被移除,所以写入到数据库的内容就是原始数据,并不会在前面多了反斜杠

但是现在已经不推荐使用mysql_real_escape_string()了,所有新的应用应该使用像PDO一样的函数库执行数据库操作


5.strip_tags



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: