2012-03-22 76 views
4

我最近在用戶代理「Microsoft URL Control - 6.01.9782」導致問題的日誌文件中看到了一個趨勢。當我追蹤IP時,它來自中國或印度。我們的網站是非常具體的,所以我們很少有來自城市外的遊客。當你的用戶被黑客攻擊時該怎麼辦

有趣的是,我看到一個有效的登錄用戶通過openID。我對於發生的事情的猜測是,用戶計算機cookie正在被克隆,並且病毒正在劫持會話。我使用內置的asp.net身份驗證來處理我的Cookie,並且Microsoft不包含任何對IP或用戶代理的檢查,因此我知道我可以複製cookie並僞造登錄。

我已經看到Google和Facebook賬號登錄就像這樣。

我的問題是:

A)有一個簡單的方法,使asp.net身份驗證更安全?

B)我應該如何處理這些帳戶? (最佳做法)我不收集任何個人信息,也無法聯繫我的一些用戶。

+0

除了笑話外,您可以放棄會話/ cookie並提供驗證碼挑戰以確保它不是自動攻擊。如果用戶遭到入侵,並且有一個假裝成用戶的真人,那麼你就不會有太多的運氣。 – Kiril 2012-03-22 16:52:32

+0

我知道這些都是機器人。它們在登錄時可能不會造成太大的損害,因爲它們似乎只是抓取鏈接,大多數更改都需要javascript。我最擔心的是,系統如果妥協,對我的用戶來說真的可能是生死攸關的。我的希望是有一些隱藏的高安全性asp.net,我可以打開這將追蹤IP變化。 – Jeff 2012-03-22 21:18:59

+0

**真的**生還是死?那麼你最好找出一個更好的方法來做安全! – Kiril 2012-03-22 21:46:47

回答

1

您可以使用阻止客戶端腳本通過document.cookie屬性訪問cookie的HttpOnly。 Cookie仍然會往返,但不會被腳本訪問,也不會被盜取。

在ASP.NET 1.1中,添加在Global.asax中的代碼波紋管:

protected void Application_EndRequest(Object sender, EventArgs e) 
{  
    foreach(string cookie in Response.Cookies)  
    {   
     const string HTTPONLY = ";HttpOnly";   
     string path = Response.Cookies[cookie].Path;  
     if (path.EndsWith(HTTPONLY) == false)  
     {    
      //force HttpOnly to be added to the cookie   
      Response.Cookies[cookie].Path += HTTPONLY;   
     }  
    } 
} 

在ASP.NET 2.0及以上版本,你可以使用web.config中:

<system.web> 
    <httpCookies httpOnlyCookies="true" /> 
</system.web> 

如果安全性在您的系統中非常重要,更好的方法是投資SSL(安全套接字層)連接到您的站點。然後,您可以設置cookie屬性,以便僅在存在SSL連接時纔會傳輸cookie。 SSL不會保護cookie在用戶計算機上時被讀取或操作,但它確實會阻止cookie在傳輸過程中被讀取,因爲cookie已加密。 這種方法需要獲得SSL證書。

這可以在web.config的httpcookies元素中完成。

<system.web> 
    <httpCookies requireSSL="true" /> 
</system.web> 

如果連接不是SSL,則cookie不會發送到服務器。

查看更多:

ASP.NET Cookies FAQ

Design and Deploy Secure Web Apps with ASP.NET 2.0 and IIS 6.0

+0

很棒的反饋。可悲的是我無法使用https,因爲支持大部分站點的CMS軟件不支持它(它將所有鏈接硬編碼爲http)。我實際上從來沒有聽說過httpOnly cookieshttps://www.owasp.org/index.php/HttpOnly – Jeff 2012-03-23 20:32:14

+0

我不認爲我可以實現這一點,因爲我們使用「FormsAuthentication.SetAuthCookie」來創建我們的auth cookie和其他cookie需要通過javascript讀取。 Asp.net似乎是Web配置中的所有cookie,或者您必須全部創建它們,而不是使用任何內置的幫助程序或控件。 – Jeff 2012-03-23 20:33:49

0

這裏需要考慮的安全邊界。如果最終用戶的個人電腦遭到入侵,您可以在您的網站上做任何事情沒有什麼,以便100%確定攻擊者無法像用戶那樣行事。一個精心設計的惡意軟件可以充當用戶,看到他們看到的任何東西,並捕獲他們輸入的任何內容,包括密碼。

負責的事情,事實上,什麼樣的谷歌網站做,是通知他們的帳戶是從犯罪嫌疑人的IP訪問用戶,並給它們鏈接到如何清理自己的PC的信息,改變自己所有網站(特別是他們的電子郵件提供商)的密碼,並防止身份盜用。您可以通過批量作業完成此操作,標記其帳戶並在下次登錄時彈出明亮的紅色警告標誌,甚至可以向他們發送電子郵件,讓他們知道發生了什麼。

+0

很棒的反饋。我想我的麻煩是這些用戶使用OpenID,所以他們不是我的用戶帳戶。通知我的用戶返回時很難做到,因爲我的網站獲得的返回登錄很少。 – Jeff 2012-03-23 20:18:53

+0

我根本不知道OpenID,但假設他們使用電子郵件地址標識符,它看起來非常簡單。通知服務提供商他們用於他們的OpenID是另一個負責任的途徑。 – 2012-03-23 20:39:04