php中htmlspecialchars()函数和addslashes()函数的使用和区别

在防止被注入攻击时,常会用到两个函数:htmlspecialchars()和addslashes()函数。这两个函数都是对特殊字符进行转义。html

1)addslashes()做用及使用sql

addslashes()一般用于防止sql注入,它可对经过get,post和cookie传递过来的参数的单引号和双引号已经null前加“\”进行转义数据库

如:如变量$str=$_POST["str"];的值为:bb' or 1='1。经过addslashes()函数过滤后会变为:bb\' or 1=\'1;cookie

2)htmlspecialchars()做用及使用xss

htmlspecialchars()也是对字符进行转义,与addslashes()不一样的是htmlspecialchars()是将特殊字符用引用实体替换。函数

如<script>alert('xss')</script>经过htmlspecialchars()过滤后为&lt;script&gt;alert(&#039;xss&#039;)&lt;/script&gtpost

3)addslashes()与htmlspecialchars()的区别htm

除了两个函数的转义方式不一样外,它们的使用也不一样。ip

addslashes()经过用于防止sql语句注入,在执行sql语句前对经过get、post和cookie传递来的参数中的单引号,双引号,\ 和null进行转义。ci

但sql执行成功后,插入到数据库中的数据是不带有转义字符\的。这是若是插入到数据库中的是一些js脚本,当这些脚本被读取出来时仍是会被执行。

这是咱们可对读取出来的数据使用htmlspecialchars()进行过滤,避免执行被注入的脚本。

相关文章
相关标签/搜索