请问PHP怎么过滤GET或者POST的参数?防止js注入,或者一些html注入?请请提供代码参考?谢谢!

解决方案 »

  1.   

    开启魔术转换可以过滤很多了,要怎么防,看看wordpress吧,你可以了解一些!
      

  2.   

    直接查查 魔术转换 相关东西吧不用去看wordpress了,学这么个东西还要去看wordpress,搞死人啊
      

  3.   

    addslashes($_POST);
    addslashes($_GET);
      

  4.   

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

  5.   

    看看wordpress好处还是有的。addslashes不能阻止所有情况。
      

  6.   

    addslashes基本上可以防止所有的sql注入了。
    防止js注入,直接把<和>替换了就可以了
      

  7.   

    如果传递的是数值,用ceil($_get['okid']),应该可以防范得住。
      

  8.   


    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的,直接把变量内容里的<>替换掉就可以了。不用写在这里面
      

  9.   

    <?php
    if (!get_magic_quotes_gpc()){
    foreach($_POST as $key => $value){
    $_POST[$key] = addslashes($val);
    }
    foreach($_GET as $key => $value){
    $_GET[$key] = addslashes($val);
    }
    }
    ?>
      

  10.   

    使用这个可行?这个就直接放到一个公共文件里面供所有页面调用,这样过滤行不行?/* 过滤所有GET过来变量------------------------------------------------------------- */ 
    foreach ($_GET as $get_key=>$get_var) 

    if (is_numeric($get_var)) { 
    $get[strtolower($get_key)] = get_int($get_var); 
    } else { 
    $get[strtolower($get_key)] = get_str($get_var); 

    } /* 过滤所有POST过来的变量 */ 
    foreach ($_POST as $post_key=>$post_var) 

    if (is_numeric($post_var)) { 
    $post[strtolower($post_key)] = get_int($post_var); 
    } else { 
    $post[strtolower($post_key)] = get_str($post_var); 

    } /* 过滤函数 */ 
    //整型过滤函数 
    function get_int($number) 

    return intval($number); 

    //字符串型过滤函数 
    function get_str($string) 

    if (!get_magic_quotes_gpc()) { 
    return addslashes($string); 

    return $string; 
    }
      

  11.   

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

  12.   

    过滤html标签的是php内置函数:strip_tags(),转义html标签的是htmlspecialchars()
      

  13.   

    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);
    这段没理解,谁帮忙解释下。
      

  14.   


    //本人在 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;
        }
    }
      

  15.   

    反对简单地使用addslashes来过滤输入,这个无法完全解决问题这样全部加上后,在输出的时候你必须再stripslashes, 更麻烦的是你得判断你输出的内容是否是addslashes过的,(比如有些/有时是从数据库来的,有些/有时是外部输入来的)
    而且这个只能提防sql注入,却又不如mysql_real_escapse_string那样对不同字符集安全.
    过滤必须针对你的允许输入范围!
    如果只能输入数字的地方,就过滤掉非数字,
    只能输入字母的地方,就过滤掉非字母,
    .....
      

  16.   

    function insert($username, $password){
       $username = mysql_escape_string( trim( $username));
       ....
       $query = "INSERT ...";
       
       ...
       
    }