2

我的web應用程序向登錄用戶顯示一些敏感信息。用戶訪問另一個網站時未首先明確註銷我的網站。如何確保其他網站在未經我或用戶同意的情況下無法訪問敏感信息?如何保護跨站點訪問的敏感信息?

例如,如果我的敏感數據是JavaScript格式,則其他站點可以將其包含在腳本標記中並閱讀​​副作用。我可以繼續建立一個黑名單,但我不想列舉什麼是不安全的。我想知道什麼是安全的,但我找不到任何文件。

更新:在我的例子的JavaScript從受害者網站上攻擊者的網站,而不是周圍的其他方式,這將是跨站腳本執行。

另一個例子是圖像,其中任何其他網站可以讀取寬度和高度,但我不認爲他們可以讀取內容,但他們可以顯示它。

的第三個例子是,一切都沒有X框-選項首部可以被加載到一個iframe,並從那裏有可能通過欺騙用戶做拖動和放下竊取數據或複製-糊。

回答

1

跨站點攻擊的關鍵點是確保您將要顯示的用戶輸入是合法的,不包含某些腳本。你可以在開始時停下來。

+0

不,我不是來自用戶,或任何不可信數據說起輸入。 –

0

首先,像superpdm狀態,從頭開始設計您的應用程序,以確保敏感信息不是首先存儲在客戶端,或者它是惡意用戶難以理解的。

此外,對於您沒有太多控制權的數據項,您可以利用內置的HTTP控件(如HttpOnly)來嘗試確保客戶端腳本無法訪問cookie,如會話令牌等向前。在您的Cookie上設置httpOnly將有助於確保惡意vbscript,javascript等不會讀取或修改您的客戶端令牌。

+0

雖然'HttpOnly'很好,但當我的身份驗證用戶必須看到我的敏感數據時,它無濟於事,因爲用戶將看不到該cookie。根本不會將信息發送給客戶,因爲我的應用程序的全部內容都是向用戶顯示此信息。 –

0

我認爲我們的網絡安全知識領域仍然存在一些混淆。您害怕跨網站請求僞造,但仍在描述和尋找解決方案跨站點腳本

跨站點腳本是一個漏洞,它允許惡意的人注入一些不必要的內容到你的網站。它可能是一些文本,但它也可能是一些JS代碼或VB或Java Applet(我提到的小程序是因爲它們可用於規避由httpOnly標誌提供的保護)。因此,如果您知道的用戶點擊惡意鏈接,他可能會竊取他的數據。這取決於呈現給用戶的敏感數據量。點擊鏈接不僅是XSS攻擊的攻擊媒介,如果向用戶展示其他用戶提供的未過濾內容,也可能會注入一些惡意代碼並造成一些破壞。他不需要偷別人的cookie來得到他想要的東西。並且在訪問其他網站時仍然沒有做任何事情,同時仍然登錄到您的應用程序。我建議:XSS

跨站請求僞造是一個漏洞,它允許某人構建特製的表格,並提交到登錄的用戶,提交這份表單在你的應用程序可以執行操作後,用戶他didin't打算。操作可能是傳輸,密碼更改或用戶添加。這是你擔心的威脅,如果用戶與你的應用程序保持會話,並以這種形式訪問站點,而這種形式被JS自動引用,這樣的請求被認證並且操作被執行。而且httpOnly不會保護它,因爲攻擊者不需要訪問存儲在cookie中的sessionId。我建議:CSRF

+1

你說的對,我的問題與XSS無關。請注意,我說我的腳本包含在攻擊者的網站上,而不是相反。我的問題與CSRF有些相關,但並不完全相同。 CSRF是關於第三方網站代表用戶執行敏感操作的。我的問題是關於第三方網站代表用戶閱讀敏感信息。例如,爲了防止CSRF,我必須檢查一個CSRF令牌。但是,我怎樣才能防止攻擊者首先閱讀CSRF令牌? –

1

舉例來說,如果我的敏感數據是在JavaScript格式,其他站點可以將其包含在腳本標籤

沒錯!所以不要把它放在JavaScript/JSONP格式中。

傳遞迴JSON或JS代碼的常見修復方法是在前面放置一些不可執行的內容,導致語法錯誤或掛起(for(;;);流行)。因此,將資源作爲<script>包含在內並不會使攻擊者獲得任何地方。當你從你自己的網站訪問它時,你可以使用XMLHttpRequest獲取它並在評估它之前切掉前綴。

(一種不起作用的解決方法是在返回的腳本中檢查window.location:當您被包含在攻擊者的頁面中時,他們可以控制JavaScript環境,並且可以破壞內置對象以做出意想不到的事情。 )

+0

是的,JavaScript/JSONP是我**不能做**的一個例子。我也知道其他例子。我想知道的是我**可以做的事情。你說JSON是安全的,但是它只是使用'

  • 11. 流星:process.env.MAIL_URL敏感信息
  • 12. $ _SERVER信息是否敏感?
  • 13. 存儲敏感信息
  • 14. 如何拒絕使用敏感信息的PHP文件訪問文件夾?
  • 15. 訪問Silverlight中的IIS站點信息
  • 16. 將敏感信息存儲在被認爲安全的類保護變量中?
  • 17. 的Maven pom.xml的敏感信息和VCS
  • 18. 使用declarative_authorization保護敏感屬性
  • 19. php:保護敏感頁面功能
  • 20. 保護敏感實體數據
  • 21. 如何防止跨站點訪問
  • 22. 如何使用python訪問受密碼保護的站點?
  • 23. 在RoR上保護敏感數據(信用卡)
  • 24. JSON-P與敏感信息的使用
  • 25. 發送針對AD的敏感信息
  • 26. GWT Upload on Google Appengine - 跨站點保護
  • 27. Java:跨包的受保護訪問
  • 28. 如何保護處理Jquery數據的敏感PHP文件?
  • 29. 如何保護Adobe Air Apps中的敏感密鑰?
  • 30. 如何使用JWT令牌保護SPA上的敏感數據