-1

我从 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 '';
    }

}

至少我们必须在输入类中调用转义函数,这样即使我们“忘记”在应用程序中调用它,也总是检查每个输入字符串,这对我们来说非常有用。

所以简而言之,有没有办法为我们不想要的大多数东西转义所有输入,而没有转义会使应用程序更慢?因此,这两个脚本相互结合。

谢谢!

4

1 回答 1

1

实际上,此功能没有任何用处。
以及在整个 youtube 视频中,我会说。

有没有办法逃避所有输入

就在这里。或者,更确切地说,。PHP 中有一个功能与用途完全相同,称为“魔术引号”。

它被从语言中删除,因为事实证明完全不可靠

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

此外 - 每个媒体也没有单一的转义规则!比如说,对于浏览器来说,有不同的数据类型——url、HTML 代码、JS 代码——每一种都需要它自己的格式!SQL 也一样——有字符串、有数字、有标识符——不能只为所有这些应用一个函数!

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

根据媒体和数据在其中的作用。

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

于 2014-05-12T06:03:44.657 回答