在Drupal中使用“全局”用户是危险的吗?

时间:2009-09-06 18:44:27

标签: php drupal

我总是听说使用全局变量很危险。这适用于Drupal吗?看一下下面的例子:

function myFunction($bla) {
   global $user;
   if (isAuthenticated($user->uid)) {
        print $secretCode;
   }

}

这可以被黑客攻击吗?

2 个答案:

答案 0 :(得分:4)

由于多种原因,全局变量可能存在危险,其中一些原因包括:

  1. Clutters名称空间
  2. 它使维护变得困难并鼓励monkeypatching,因为全局变量可以从任何地方修改
  3. 他们不是透明的透明
  4. 在内存管理语言中,全局变量可能成为内存泄漏的来源
  5. 他们在大型应用程序/站点中进行调试尤其困难,因为很难找到它们的设置和修改位置。
  6. 对您的用例没有什么特别的威胁。应该没问题。如果您非常害怕,可以在评估之前确保$ user-> uid是一个整数:

    function myFunction($bla) {
       global $user;
       if( is_int($user->uid) ){
          if (isAuthenticated($user->uid)) {
             print $secretCode;
          }
       }
    }
    

    但这可能是不必要的。

答案 1 :(得分:0)

没有。如果您使用的是session_register,则可以进行SQL注入。因为这是一种古老的方法,在PHP 4中。虽然,很多人仍然使用它。