2011-10-21 68 views
52

我正嘗試使用jQuery的ajax方法在不同的域上創建Web服務。在做一些研究之後,看起來它不允許這是通過設計來防止跨站點腳本。

我碰到周圍是包括這條線的工作:

$.support.cors = true; 

在我的javascript代碼頂部。據我所知,這使jQuery中的跨站點腳本。

這行代碼是否會讓我的網站更容易受到攻擊?我一直聽說XSS是一個安全問題,XSS有合法用途嗎?

+8

背景:http://api.jquery.com/jQuery.support/我不認爲設置*啓用*任何東西,但。它只是告訴jQuery支持什麼 –

+3

@Pekka - 你鏈接的文檔完全相反。 –

+3

@Alvaro通過設置該變量不會*啓用* CORS。你只是告訴jQuery你正處於一個跨域XHR請求可能的環境中。 (所以,當然,你可以在jQuery中使用它們,這很公平。) –

回答

35

XSS不是可以在jQuery中啓用的功能。如果jQuery核心存在XSS漏洞,這將非常不尋常,但它是可能的並且其名爲DOM-based XSS

「跨源資源共享」或CORS與XSS,但是不相同,但是如果Web應用程序存在XSS漏洞,那麼攻擊者將對該域中的所有資源具有類CORS訪問權限。簡而言之,CORS使您可以控制如何打破same origin policy,從而無需引入完整的XSS漏洞。

$.support.cors查詢功能依賴於Access-Control-Allow-Origin HTTP響應標頭。這個可能是的一個漏洞。例如,如果Web應用程序在每個頁面上都有Access-Control-Allow-Origin: *,則攻擊者將具有與XSS虛擬性相同的訪問級別。要小心你在哪些頁面上引入了CORS頭文件,並儘量避免使用*

因此,要回答你的問題:NO一個Web應用程序就不需要,因爲周圍有SOP如CORS/JSONP /跨域代理/ access-control-origin的方式介紹了XSS漏洞。

+0

如果你有一個簡單的GET,你只想啓用,並且你有一個網站的子域名,那麼你如何使默認訪問風格行爲在鏈接中工作。你沒有給你的理念。 –

+3

@ kitgui.com我不知道你在問什麼或者與安全有什麼關係。 – rook

+1

有沒有?最後。 –

11

它只能幫助,如果你在瀏覽器中啓用CORS但它不是由jQuery的被支持:

爲了能夠在不支持 CORS但但允許環境跨域請求跨域XHR請求(Windows小工具等), set $ .support.cors = true ;. CORS WD

僅將此屬性設置爲true不會導致安全漏洞。

3

當黑客能夠注入腳本代碼以將請求更改爲另一個域時,他也可以在腳本中設置此JavaScript標誌。

因此,在這個入侵點上,這個標誌設置的變化不大。

+2

這真的沒有回答這個問題。在入侵的時候,所有的賭注都沒有了。但是這個想法是爲了防止這種情況發生。 – jpaugh