输入消毒,一些问题(PHP)

时间:2014-05-11 22:41:24

标签: php input escaping validating

我从YouTube视频中获取此代码,代码非常有用,但我想提高它的安全性:

function escape($string) {
          $str = trim($string);
          return htmlentities($strfinal, ENT_QUOTES, 'UTF-8'); 
      }

与Input类一起使用:

class Input {

    public function exists($type = 'post') {
        switch ($type) {
            case 'post':
                return (!empty($_POST)) ? true : false;
            break;
            case 'get':
                return (!empty($_GET)) ? true : false;
            break;
        }
    }

    public static function get($item) {
        if(isset($_POST[$item])) {
            return $_POST[$item];
        } elseif(isset($_GET[$item])) {
            return $_GET[$item];
        }
        return '';
    }

}

对于我们至少应该调用输入类中的转义函数非常有用,因此即使我们忘记了#34;它也会检查每个输入字符串ALWAYS。在我们的应用程序中调用它。

所以简而言之是有一种方法来逃避我们不想要的大多数事情的所有输入,没有逃脱使应用程序更慢?所以将这两个脚本结合在一起。

谢谢!

1 个答案:

答案 0 :(得分:1)

实际上,这个功能没什么用处。
和整个YouTube视频一样,我会说。

  

有没有办法逃避所有输入

是的,有。或者,相反,。 PHP中有一个功能,具有完全相同的目的,称为“魔术引号”。

它被语言驱逐出去,证明完全不可靠

事实是,没有一组“不受欢迎”的字符。我们用于输出的每种媒介,需要它自己的,不同的集合,与其他媒体无关 - HTML,JS,SQL,电子邮件正文,JSON字符串等等。

此外 - 每个媒体也没有单一的逃避规则!比方说,对于浏览器,有不同的数据类型 - 网址,HTML代码,JS代码 - 每个都需要它自己的格式!对于SQL来说是相同的 - 有字符串,有数字,有标识符 - 一个不能只应用一个函数!

这就是为什么你应该在使用之前正确格式化数据,

根据其中的媒介和数据角色。

虽然很久以前这种入口点格式被证明是不安全和无用的。