在防止被注入攻击时,常会用到两个函数: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()过滤后为<script>alert('xss')</script>post
3)addslashes()与htmlspecialchars()的区别htm
除了两个函数的转义方式不一样外,它们的使用也不一样。ip
addslashes()经过用于防止sql语句注入,在执行sql语句前对经过get、post和cookie传递来的参数中的单引号,双引号,\ 和null进行转义。ci
但sql执行成功后,插入到数据库中的数据是不带有转义字符\的。这是若是插入到数据库中的是一些js脚本,当这些脚本被读取出来时仍是会被执行。
这是咱们可对读取出来的数据使用htmlspecialchars()进行过滤,避免执行被注入的脚本。