2012-08-02 134 views
5

我在準備一些診斷工具。它在iframe的網站上運行 - 只能通過javascript。從客戶端刪除任何會話

現在我需要的是擺脫我在我的iframe中的網站中的會話cookie。我只需要在執行一些操作後註銷。

不幸的是,我不能只從JavaScript中刪除會話cookie,因爲它是用httpOnly標誌標記的。我沒有找到任何方式在隱身模式下打開iframe。

現在對於achiving這個規則如下:

  • 我可以添加任何文件到目標網站服務器
  • 我可以運行的網站域名
  • 我可以強制用戶使用指定的瀏覽器的任何JavaScript (它不一定是跨瀏覽器的解決方案)
  • 我不能修改網站代碼
  • 解決方案必須是服務器和編程語言無關

解決方法的任何想法?

+1

有趣的問題。 – 2012-08-08 14:37:24

+0

那麼,誰在服務器上創建這些會話? – 2012-08-09 09:13:48

+0

我的診斷應用程序的用戶通過iframe使用服務器.. – 2012-08-09 14:00:13

回答

2

你只是不能管理來自javascript的httpOnly cookies。

但我認爲你要分析的頁面,但也與js。那麼爲什麼要使用iframe?

可以抓取頁面的內容,從HTML或JavaScript之外分析:

  • 做Ajax請求您的應用程序代理
  • 使用HTML5 WebSockets的作爲代理服務器。我假設websocket服務器是你的。 Websockets也具有跨域的能力。

然後你只需要解析提取的DOM(我看到了一些內置的東西)。讓分析開始。

+0

我需要爲用戶提供在頁面上操作的可能性,比如在頁面上執行操作...在iframe中執行操作..不僅僅分析它的內容... – 2012-08-09 13:51:50

+0

@ŁukaszW.pl你可以。做爲普通代理(即hidemyass.com)。只需複製該內容並顯示它。那是問題嗎? – Zaffy 2012-08-09 15:30:50

+0

不正常的代理將頁面上的所有鏈接轉換爲目標代理?它的方式來處理..在代碼中的URL,URL在相關的腳本...很大的機會搞砸了東西,它必須是可靠的.. – 2012-08-09 15:37:57

1

如果您只是想防止在iframe中使用cookie,則可以嘗試使用沙盒屬性。

似乎是一個非常類似的問題:

Disable Cookies Inside A Frame/Iframe

希望我正確理解你的問題。

+0

好的鏡頭,但沙箱似乎並沒有在主機站點和iframe之間分開cookie ......它可以防止其他操作,但不是這一個.. – 2012-08-02 19:26:56

0

說IFrame引用網址:example.com/iframe.html。

請將它指向cookieless.example.com/iframe.html,並使用服務器端反向代理規則設置來提取該請求並將其指向example.com/iframe.html。

取決於你如何設置cookie的服務器端(即:「.example.com的」)的cookie將只能在www和根域設置

+0

但是,我會有同樣的起源政策的問題,因爲我需要用js修改iframe內容。此外,我並不擔心在頁面和iframe上使用相同的cookie ......我需要的是在一些js代碼序列之間放置會話,以便在下一個序列之前有乾淨的cookie和會話... – 2012-08-04 18:37:18

+0

@ŁukaszW.pl我認爲這是是很好的方法。想想......當'Cookie deletor'網站'將用戶重定向時,您的iframe addr將會改變,您的來源和策略將會匹配。錯過了我的東西? – Zaffy 2012-08-09 09:18:16

+0

然後你將從原始頁面返回你的cookies。此外,我不能將子域添加到iframe中的應用程序..只是上傳它的服務器上的一些文件,我不知道它會是什麼.. – 2012-08-09 13:55:11

1

的JavaScript所以只是AJAX請求到服務器,並告訴它取消設置會話變量。

+0

正如我所說這將是診斷工具,現在我不知道什麼應用程序將會進入iframe,所以我無法確定我應該做什麼請求。更壞的消息是,我不知道它會是什麼平臺,所以我不能創建例如我自己的php腳本丟棄會話cookie。 – 2012-08-07 18:10:07

0

我想你需要某種服務器端代理來記錄cookie頭的值,然後根據請求中的值在稍後的階段重置這個頭值。

這應該不會太難用任何語言編寫,例如在IIS/.net框架中它會是一個IHttpModule的實現。

+0

我無法訪問目標應用程序,所以我不能將HttpModule放入它。它也應該是跨平臺的 - 我無法爲每個Web服務器都寫代理。 – 2012-08-08 15:23:17

+0

如何重定向到相關網站的代理? – 2012-08-10 10:09:51

+0

看看我在kewlashu回答中的評論。我不能冒險代理和正常使用網站之間的區別.. – 2012-08-10 13:21:25

2

據我瞭解 -

假設 - 你將不得不與它實現的用戶登錄/註銷網站。

因此,如果您可以通過某種方式讓診斷應用程序將目標網站的註冊網址作爲配置變量或某些設置(通過在服務器中放置一些js或文件),那麼這項工作可以非常簡單。只需讓診斷應用程序在需要時加載該註銷網址即可。

+0

多數民衆贊成我的計劃,如果我會放棄:( – 2012-08-09 15:42:43

+0

是的,這將是一個簡單的沒有廢話的方法.....只是好奇你的理由有這種方法作爲你的最後一個選擇? – kewlashu 2012-08-09 15:52:59

+0

我想要使其儘可能通用(有時不存在簡單的註銷鏈接,或者有其他會話信息不能像這樣被丟棄)。另外,我希望用戶儘可能減少配置。 – 2012-08-09 18:31:29

-1

唯一的辦法就是禁用Cookies

+0

Did你的事件看看我的帖子和其他答案的評論?就像我說我需要cookie,因爲iframe中的頁面應該正常工作,直到我想重置它們... – 2012-08-11 09:21:47