2013-03-19 57 views
4

假設沒有可用於修改某人電腦的瀏覽器端安全漏洞,我不明白如何使用eval可能導致任何真正的威脅。javascript eval真的是一個安全威脅的大?

有人可以解釋如何可能。有人可能會在用戶的計算機上顯示某些內容,但如果沒有重定向或接受下載,則不會造成實際的傷害。服務器端不會造成任何損害,對吧?

+1

如果你的第一個假設是無法證明的,該怎麼辦?答案的價值有多重要? – flq 2013-03-19 15:51:16

+1

'eval()'允許執行任意代碼。您無法預測現在或將來可能會執行哪些任意代碼。 – 2013-03-19 15:51:32

回答

3

當您切換JavaScript的控制權時,不僅僅是它的執行可能會有害。使用Ajax,您可以將當前頁面加載flash object或pdf或Java小程序。這將不會出現對話框,您將調用插件(它比瀏覽器本身擁有更多的權限)。

因此,從理論上講,它可能會造成與插件本身所允許的一樣多的損害,通常是相當多。存儲在全局可訪問的JavaScript變量(由你的代碼,或第三方代碼)

2

JavaScript提供了許多方法來使瀏覽器發送數據到服務器。他們可以利用來對服務器發起攻擊(包括拒絕服務攻擊)。

1

任何數據可傳遞給eval代碼。

根據存儲在那裏的內容(例如用戶認證令牌)以及系統如何設計,可能會導致很多服務器端損壞。

1

因爲eval可能會導致代碼執行,所以它會在您的網站上創建一個漏洞,除非您100%控制該代碼(這非常非常罕見,或者您不會考慮eval)。

此漏洞並不一定會影響您的服務器負,但它會影響您的用戶非常重視,並在某些情況下,允許黑客盜取用戶的cookies,可以訪問他的會話,以及許多其他的事情。

一個簡單的例子是eval執行惡意腳本,該惡意腳本會向您的服務器發送一條信息,其中包含服務器刪除或更改用戶數據的所有必要信息。由於請求實際上來自您的用戶會話,因此這是完全有效的請求。