2016-11-12 39 views
0

我有REST服務進行登錄認證,其預計,我送憑據text/html,如果我給他們的application/x-www-form-urlencoded內容類型不起作用工作。發送的登錄憑據爲text/html內容類型

是不是不太安全送他們爲文/ *(我假設它是)? 應用程序/ *如何使它更安全?

相關:CAS REST authentication API accepts text/* but not application/* content type

+0

敏感細節必須在HTTP標頭中發送,而不是在HTTP主體中發送。就內容類型而言,它更多的是爲服務完成的設計和實現。 – ScanQR

回答

1

這可能是CSRF保護的(弱)的形式。來自Javascript的跨域調用application/x-www-form-urlencoded將使服務器保持原樣,因此攻擊者可能通過發送AJAX請求將用戶登錄到攻擊者的域中。但是,如果僅接受text/html,則如果跨域請求,則此類請求會首先觸發預檢OPTIONS請求;如果服務器未明確允許CORS標頭,則瀏覽器不會發送實際數據。

因此,請求憑證text/html的API比application/x-www-form-urlencoded稍微安全一些。除此之外,它對安全性沒有太大影響。但是請注意,儘管內容類型在服務器響應中確實具有重要的安全性效果,但JSON數據並不一定是html編碼,因爲JSON只是一種數據格式,客戶端Javascript應用程序可以並應該決定如何渲染或編碼下載的數據然而,如果數據不是以JSON編碼的話,任何JSON數據「頁面」,如果以text/html作爲text/html發送,由此產生的JSON字符串本身就容易受到XSS的影響,因爲瀏覽器會將其渲染爲因此,JSON響應應始終爲application/json,在這種情況下,瀏覽器將不會將其作爲Javascript運行。)