首页 > 代码库 > php关于输入过滤小结
php关于输入过滤小结
Web的攻击,大部分是来自于外部,如Url上添加一些字段注入($_GET输入),表单的提交注入(一般为$_POST),所以在接收数据时对数据进行过滤,是很有必要的。
一. 一般php自带的过滤方法有:
1.空过滤
trim过滤字符串首尾空格
$name = trim($_POST[‘name‘]);
2.标签过滤 :
strip_tags会将字符串中的php标签(<?php ?>)Html标签(<h1></h1><script></script>....等)移除。一定程序上阻止了恶意注入。
//for example: $_POST[‘name‘] = "<script>alert(‘hehe‘);</script>"; var_dump($_POST[‘name‘]);//弹出信息框 ‘hehe‘ $name = strip_tags($_POST[‘name‘]); var_dump($name); //string(14) "alert(‘hehe‘);"
3.转数据类型
若知道要接收的数据是整形或浮点形,可以直接转数据类型。
//转整形 $number = intval($_POST[‘number‘]); $price = floatval($_POST[‘price‘]);
4.移除xss攻击(跨站脚本攻击)
xss攻击有时会把标签转换成其他数据,strip_tags防止不了,
ThinkPHP中有个remove_xss方法,可以将大部分xss攻击阻止。这方法在 ./ThinkPHP/Extend/Function/extend.php中,为了方便使用,可以放到项目的common.php里。
方法如下
/** * @from extend.php * 过滤xss攻击 * @param str $val * @return mixed */ function remove_xss($val) { // remove all non-printable characters. CR(0a) and LF(0b) and TAB(9) are allowed // this prevents some character re-spacing such as <java\0script> // note that you have to handle splits with \n, \r, and \t later since they *are* allowed in some inputs $val = preg_replace(‘/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/‘, ‘‘, $val); // straight replacements, the user should never need these since they‘re normal characters // this prevents like <IMG SRC=http://www.mamicode.com/@avascript:alert(‘XSS‘)>>调用时如下
$name = remove_xss($_POST[‘name‘]);基本我使用的就这几种方法。如果有其他不错的方法,请一起来分享。
php关于输入过滤小结
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。