首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

PHP如何过滤GET或者POST的参数?如何样才能保证代码不被注入

2013-01-27 
PHP怎么过滤GET或者POST的参数?怎么样才能保证代码不被注入?请问PHP怎么过滤GET或者POST的参数?防止js注入

PHP怎么过滤GET或者POST的参数?怎么样才能保证代码不被注入?
请问PHP怎么过滤GET或者POST的参数?防止js注入,或者一些html注入?请请提供代码参考?谢谢!
[解决办法]
直接查查 魔术转换 相关东西吧

不用去看wordpress了,学这么个东西还要去看wordpress,搞死人啊
[解决办法]



if (!get_magic_quotes_gpc())//如果没有开启的话
{
    /****需要对这几个数组,遍历,注意数组多维的情况,addslashes($str)就可以
    $_GET
    $_POST
    $_COOKIE
    $_REQUEST
    ****/
}


[解决办法]
看看wordpress好处还是有的。addslashes不能阻止所有情况。
[解决办法]
addslashes基本上可以防止所有的sql注入了。
防止js注入,直接把<和>替换了就可以了
[解决办法]
如果传递的是数值,用ceil($_get['okid']),应该可以防范得住。
[解决办法]

if (!get_magic_quotes_gpc()) {
!empty($_POST) && Add_S($_POST);
!empty($_GET) && Add_S($_GET);
!empty($_COOKIE) && Add_S($_COOKIE);
!empty($_SESSION) && Add_S($_SESSION);
}
!empty($_FILES) && Add_S($_FILES);

function Add_S(&$array){
if (is_array($array)) {
foreach ($array as $key => $value) {
if (!is_array($value)) {
$array[$key] = addslashes($value);
} else {
Add_S($array[$key]);
}
}
}
}

过滤js的,直接把变量内容里的<>替换掉就可以了。不用写在这里面
[解决办法]
<?php
if (!get_magic_quotes_gpc()){
foreach($_POST as $key => $value){
$_POST[$key] = addslashes($val);
}
foreach($_GET as $key => $value){
$_GET[$key] = addslashes($val);
}
}
?>

[解决办法]
$str = "Is your name O'reilly?";

// 输出:Is your name O\'reilly?
echo addslashes($str);

[解决办法]

//本人在 TP 框架中的过滤函数。
// Input 类是 TP 提供的。
function inputFilter($content)
{
if(is_string($content) ) {
        return Input::getVar($content);
    }
    elseif(is_array($content)){
        foreach ( $content as $key => $val ) {
            $content[$key] = inputFilter($val);
        }
        return $content;
    }
    elseif(is_object($content)) {
        $vars = get_object_vars($content);
        foreach($vars as $key=>$val) {
            $content->$key = inputFilter($val);


        }
        return $content;
    }
    else{
        return $content;
    }
}


[解决办法]
反对简单地使用addslashes来过滤输入,这个无法完全解决问题

这样全部加上后,在输出的时候你必须再stripslashes, 更麻烦的是你得判断你输出的内容是否是addslashes过的,(比如有些/有时是从数据库来的,有些/有时是外部输入来的)
而且这个只能提防sql注入,却又不如mysql_real_escapse_string那样对不同字符集安全.


过滤必须针对你的允许输入范围!
如果只能输入数字的地方,就过滤掉非数字,
只能输入字母的地方,就过滤掉非字母,
.....



热点排行