2012-07-24 143 views
0

我被困在這個問題上。 這個想法是允許用戶通過局域網或本地網絡訪問我的網站,以跳過登錄頁面並以具有特殊權限的匿名用戶訪問網站。 (我使用apache2和mod_wsgi運行Ubuntu服務器)。有誰知道是否有方法讓apache確定用戶是否通過LAN訪問網站?我願意接受所有建議,因爲我目前不知道如何解決這個問題。用戶通過局域網訪問網站的權限(Django)

謝謝。

回答

0

最簡單的方法是查看遠程IP。如果它在你的LAN子網中,那麼你知道它們是本地的。然而,通常免責聲明和全部:雖然REMOTE_ADDR大部分爲,但是在某些情況下可能會被欺騙。這需要訪問ISP或類似服務器(如果您嘗試穿透銀行並在足夠隱藏在幽靜的海島度假勝地中度過餘生,那麼這種攻擊水平纔有價值),或訪問本地網絡本身,所以在任何一種情況下都有點奇怪,但安全的黃金法則是「最壞的計劃,最好的希望」。 任何入侵的情況通常太高的價格支付任何小的便利缺乏安全授予您。

這就是說,我會把它當作一個教育練習。您仍然需要至少一個用戶,這些用戶只需在所有本地網絡用戶中共享(順便提一下,另一個honkin的大紅色安全標誌)。您將檢查IP地址,確定它是否在您的子網中,如果是,請使用存儲的憑據登錄共享用戶(又一個honkin的大紅色安全標誌)。

from django.contrib.auth import authenticate, login 

class PleaseHackMeMiddleware(object): 
    def process_request(self, request): 
     if re.search(r'^192.168.1', request.META['REMOTE_ADDR']): 
      user = authenticate('shared_username', 'shared_password') 
      if user: 
       login(request, user) 

然後,只需將其添加到MIDDLEWARE_CLASSES並等待不好的事情發生。

+0

是的,就像那樣,或者只是拒絕從apache或os級別訪問。 – slackjake 2012-07-24 19:55:59

+0

這將工作,我會保持這個開放,並嘗試考慮一個更安全的方式來做到這一點,因爲安全是這個網站的問題。我想知道在會話期間創建臨時用戶是否可以解決共享用戶的安全問題? – karkle 2012-07-24 20:14:46

+0

另外我正在考慮在服務器上製作不同的虛擬主機。一個用於在不同端口上運行的所有公共訪問,DNS服務器可以將該網站重新路由到另一個端口,另一個用於端口80上運行的其他端口。運行在端口80上的非公共虛擬主機可以通過wsgi告訴網站將變量傳遞到網站用戶在某種程度上在局域網上? – karkle 2012-07-24 20:19:04