2012-01-13 90 views
0

可能重複:
PHP global in functions

使用這樣的事情讓我擔心:

<? global $config; ?> 

比方說,我存放我的數據庫連接,我用在字符串中鹽我$ config global。

是否有機會通過現在使用:

<? global $config; ?> 

我會有問題在未來

如果是這樣,這怎麼可能被利用?

+0

你爲什麼認爲它可以被利用? – 2012-01-13 23:39:50

+0

另外,你是什麼意思「我用於弦的鹽」?哪些字符串? – 2012-01-13 23:42:03

+0

攻擊者是否有可能獲得或使用全局$ config中的數據庫信息或salt來執行攻擊? – 2012-01-13 23:42:35

回答

5

簡短的回答是沒有。

global關鍵字只是簡單地使該變量可以訪問一個通常無法訪問它的函數。它不會讓外部腳本訪問它,這純粹是文件本身是否可訪問的問題。

+0

是的理解。但讓我再次嘲弄這一點。全局$ config包含在我正在使用的函數中。 – 2012-01-13 23:50:55

+1

沒關係。如果包含它們的文件是安全的,則應用程序內的代碼是安全的。黑客必須能夠實際讀取源文件(在這種情況下,他們可以只讀取文件中的密碼等)。他們無法訪問正在運行的腳本中的變量。 **總是存在SQL注入或其他類型安全缺陷的風險,但這些與全局關鍵字並不直接相關。 – 2012-01-13 23:52:39

+0

如果攻擊者無法訪問包含敏感數據的文件,並且攻擊者無法在您的服務器上執行自己的代碼,則應該大體上可以。編輯:beaten – tangrs 2012-01-13 23:54:07

0

我會在將來遇到問題嗎?

如果是這樣,這怎麼可能被利用?

全局變量的問題不在於它們打開了一些魔法門,於是它們可以直接被利用。相反,全局變量往往會讓應用程序的設計更混亂,因爲它不清楚哪些函數/類/模塊依賴於它們。因此,維護起來更加困難。因此,它們具有較高的包含錯誤的可能性,這反過來可能導致迄今未知的安全缺陷。 Ergo,程序員對全局性表示不滿。

+0

「迄今爲止這樣」? – 2012-01-13 23:46:10

+0

很明顯,但我們正在談論一些反覆回收的變量。我的問題不是應用程序設計與應用程序安全有關。純粹從使用全局$ config的安全角度來看,是否有任何負面影響? – 2012-01-13 23:48:52

+1

@DanKanze這是一個非常有效的答案。他直接告訴你「未來會遇到問題」(混亂的應用程序設計),並且通過使用全局的方式,它不會爲漏洞打開一扇「魔法門」。 – 2012-01-13 23:59:43