2010-07-06 95 views
1

我正在處理一個腳本,以自動爲您簽入一個項目的basecamp ...到目前爲止,我已經拿出以下內容作爲簡單的事情,只是您提交了哪些帖子到一個iframe:在IE問題中通過iframe提交HTTPS

<html> 
<head> 
<style> 
#bc1{ width: 100%; height: 350px; } 
</style> 
</head> 
<body> 

<iframe id="bc1" name="_bc1"></iframe> 

<form method="post" id="bcform" action="https://launchpad.37signals.com/session" target="_bc1"> 
<input name="authenticity_token" type="text" value="PyweDIeBkqaAOltDviI/nOADpyrESRDf77R2v7W/6tM=" /> 
<input id="product" name="product" type="text" value="basecamp" /><br/> 
<input autocapitalize="off" autocomplete="on" class="overlayable" id="username" name="username" title="Username" type="text" /> 
<input autocomplete="on" class="overlayable" id="password" name="password" title="Password" type="password" /> 
<input name="commit" type="submit" value="Sign In" /> 
</form> 

</body> 
</html> 

這部作品在所有的瀏覽器除了IE8(大概7,6)

輸入您的大本營登錄/密碼輸入到文本框,然後點擊登錄試試看。

有沒有人知道爲什麼這在IE瀏覽器中打破,但在其他瀏覽器工作?

回答

3

如果您還沒有通過HTTPS提供初始頁面,那麼在iframe中使用HTTPS不會增加任何安全性,因爲iframe本身的URI可能會被攻擊者更改,並且用戶不會注意到它:

HTTP and HTTPS iframe

+0

事實上,它確實增加了一些安全性,因爲憑據可現在去,而不是送過來作爲查詢字符串的一部分。因此,至少使用iframe可以防止密碼在服務器訪問日誌中顯示明文。 – Leven 2013-01-30 08:10:44

+0

@Leven,使用POST或GET與使用iframe無關。當然,在GET中使用密碼通常是一個糟糕的主意。 – Bruno 2013-01-30 08:51:26

+0

@Brunoa,它在某些情況下。想象一下在HTTP託管頁面上出現的登錄彈出窗體。由於同源策略,您無法從該頁面向HTTPS執行Ajax POST。儘管使用JSONP,GET仍然是可能的,但是您可以在查詢字符串中發送密碼。使用通過HTTPS加載的iframe,但是可以通過HTTPS進行POST,這在我看來更安全一些。 – Leven 2013-01-30 09:03:08