【问题标题】:Securing $_post and $_get data before use使用前保护 $_post 和 $_get 数据
【发布时间】:2015-05-13 08:28:26
【问题描述】:

我对发布到我的应用程序的数据的安全性有疑问。我有一个代码,我从客户端捕获所有 $_POST 和 $_GET 数据并将它们放入对象的数组中。然后将此对象传递给我需要访问某些类型数据(GETS、POSTS、SESSIONS、一些配置等)的函数。

我抓住了所有的帖子,并得到了这部分代码:

foreach ($_GET as $key => $value)   // STORE $_GET VALUES
        {
            $this->_get[$key] = $value;
        }

        foreach ($_POST as $key => $value)  // STORE $_POST VALUES
        {
            $this->_post[$key]  = $value;
        }

        foreach ($_SESSION as $key => $value)   // STORE $_SESSION VALUES
        {
            $this->_session[$key] = $value;
        }

        $this->_config = $config;

        unset($config); // CLEAR $CONFIG VALUES 

        unset($_GET, $_POST /*, $_SESSION */ ); // CLEAR $_GET, $_POST FOR SECURITY ISSUES

在该应用程序文件的末尾,我将 $this->_session 反转回 $_SESSION,如下所示:

foreach ($in->_session as $key => $value)   // STORE $_SESSION VALUES
    {
        $_SESSION[$key] = $value;
    }

如何使用GETS 和POSTS 逃避或做其他事情,以便它们可以“安全”地在应用程序中使用。有时我使用它来访问数据库,或将数据写入数据库,但我不确定它是否安全。

有什么建议吗?

【问题讨论】:

  • 看起来您需要转义 db 注入和 xss 注入,我建议在将值存储到对象之前对其进行消毒,对于 sql 使用内置 sql 转义函数,对于 XSS,您将必须找到与您最相关的功能
  • 你为什么要这样做?这种方法存在很多问题(已知的和可能的),我不知道从哪里开始。
  • @cosmo0:因为我想通过一个对象传递所有需要的数据,它是发布、获取、会话或配置设置的,并且只需在我需要的地方使用我需要的东西。但如果有更好的解决方案来实现这一点,我会使用 ti。
  • 嗯,“将所有内容传递给单个对象”的概念被称为“大泥球”,并不是一个好的设计。我认为你最好重新考虑你的架构,但是如果没有看到更多的代码,我真的帮不了你(而且这对 SO 来说是题外话)。

标签: php sql post get code-injection


【解决方案1】:

在将值存储到对象之前,您需要转义这些值, 我不确定您为什么要取消设置原始变量,但如果您这样做,我建议将它们的原始值存储在其他 obj 用于调试目的

foreach ($_GET as $key => $value)   // STORE $_GET VALUES
        {
            $this->_get[$key] = $this->escape($value);
        }

...

private function escape($value){
// ... here you will have to escape the xss or sql injections
 return $escapedValue;

}

很高兴阅读有关安全性的文章

PHP Security Cheat Sheet

【讨论】:

    【解决方案2】:

    我建议您在将 $_POST$_GET 中的值存储为对象之前对其进行过滤和清理

    查看documentationsanitize filters

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多