本文主要是介绍tp5怎么防sql注入 xss跨站脚本攻击呢?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
如题:tp5怎么防sql注入 xss跨站脚本攻击呢?
其实很简单,TP框架中有自带的,在 application/config.php 中有个配置选项:
框架默认没有设置任何过滤规则,你可以是配置文件中设置全局的过滤规则:
// 默认全局过滤方法 用逗号分隔多个
'default_filter' => 'htmlspecialchars,addslashes,strip_tags',
htmlspecialchars:防XSS攻击,尖括号等转义过滤
addslashes:防SQL注入,在每个双引号(")前添加反斜杠
strip_tags:剥去字符串中的 HTML 标签
把这些参数加上后,每次请求后端的接口中,框架就会对请求的变量进行自动过滤了。
也可以在获取变量的时候添加过滤方法,例如:
Request::instance()->get('name','','htmlspecialchars'); // 获取get变量 并用htmlspecialchars函数过滤Request::instance()->param('username','','strip_tags'); // 获取param变量 并用strip_tags函数过滤Request::instance()->post('name','','org\Filter::safeHtml'); // 获取post变量 并用org\Filter类的safeHtml方法过滤
可以支持传入多个过滤规则,例如:
Request::instance()->param('username','','strip_tags,strtolower'); // 获取param变量 并依次调用strip_tags、strtolower函数过滤
如果当前不需要进行任何过滤的话,可以使用(V5.0.3+
版本) ps: 这个方法测试了下,好像没有起作用,你们也可以试下
Request::instance()->get('name','',false); // 获取get变量 并且不进行任何过滤 即使设置了全局过滤
如果有用到富文本编辑器或其他类似的提交html标签的变量,可以使用:
htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。
预定义的字符是:
- & (和号)成为 &
- " (双引号)成为 "
- ' (单引号)成为 '
- < (小于)成为 <
- > (大于)成为 >
htmlspecialchars_decode() 函数把预定义的 HTML 实体转换为字符。
会被解码的 HTML 实体是:
- & 解码成 & (和号)
- " 解码成 " (双引号)
- ' 解码成 ' (单引号)
- < 解码成 < (小于)
- > 解码成 > (大于)
htmlspecialchars_decode() 函数是 htmlspecialchars() 函数的反函数。
这篇关于tp5怎么防sql注入 xss跨站脚本攻击呢?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!