2009-09-06 57 views

回答

4

全局变量可能是危险的原因有很多,其中一些包括:

  1. 杂波命名空间
  2. 这使得维修困难,并鼓励的monkeypatching,全局变量可以在任何地方
  3. 他们是被修改不透明
  4. 在内存管理语言中,全局变量可能成为内存泄漏的源
  5. 它们使调试尤其是不同在大型应用程序/站点上很难,因为可能很难找到它们被设置和修改的位置。

没有什么特别的威胁有关你的使用情况。应该没问题。如果你很害怕,你可以确保用户$> uid是评估前的整数

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

但是这可能是不必要的。

+0

你也许知道,如果它在我的具体的例子是危险的?我知道$ user是一个内置变量。即我没有定义它,Drupal的确如此。 – coderama 2009-09-06 19:40:58

+0

编辑我的答案了一下。 – 2009-09-06 20:02:19

+0

还有一个问题。 “黑客”可以通过自己的用户吗?我的意思是,如果他能通过一个1的UID,那就意味着他是管理员。 – coderama 2009-09-06 20:29:02

0

号如果您使用了session_register,这是可能的SQL注入。由于这是一个古老的方法,所以在PHP 4中。尽管如此,许多人仍然在使用它。

相关问题