對於一個巨大的項目,我們將做一個「superadmin」登錄(所有其他管理工作直接在前端)的地方,你可以改變很多事情。IP白名單爲管理界面
由於安全性確實非常重要,我一直在考慮只允許具有特定IP的用戶進行連接。有誰知道這樣做的網站,它是過度保護,或者你能推薦另一種真正安全的管理方式嗎? 只有在Chrome或Firefox中有一些有用的可能性時,我們才能使其適用於特定的瀏覽器。
FYI前端是JavaScript的,HTML和CSS只
對於一個巨大的項目,我們將做一個「superadmin」登錄(所有其他管理工作直接在前端)的地方,你可以改變很多事情。IP白名單爲管理界面
由於安全性確實非常重要,我一直在考慮只允許具有特定IP的用戶進行連接。有誰知道這樣做的網站,它是過度保護,或者你能推薦另一種真正安全的管理方式嗎? 只有在Chrome或Firefox中有一些有用的可能性時,我們才能使其適用於特定的瀏覽器。
FYI前端是JavaScript的,HTML和CSS只
將沒有意義做客戶端,因爲沒有什麼真正停止從修改/禁用您的JS攻擊者。
所以只有安全選項是服務器端。我自己在PHP中使用CMS系統。
UPDATE:樣品實施
在該項目中,我使用了GeoIP的服務(如this one從的MaxMind)
function geoIPRequest($ip){
$params = getopt('l:i:');
if (!isset($params['l'])) $params['l'] = '<userIDtoMaxMind>';
if (!isset($params['i'])) $params['i'] = $ip;
$query = 'https://geoip.maxmind.com/a?' . http_build_query($params);
$curl = curl_init();
curl_setopt_array(
$curl,
array(
CURLOPT_URL => $query,
CURLOPT_USERAGENT => 'MaxMind PHP',
CURLOPT_RETURNTRANSFER => true
)
);
$countryCode = curl_exec($curl);
if (curl_errno($curl)) {
throw new Exception(
'GeoIP request failed with a curl_errno of '
. curl_errno($curl)
);
}
return $countryCode;
}
$countryCode = geoIPRequest($_SERVER['REMOTE_ADDR']);
if(!in_array($countryCode, array('DE', 'DK', 'EU', 'GB', 'SE'))){
header('HTTP/1.0 403 Forbidden');
echo "You don't have access";
exit();
}
上面的代碼是從示例代碼適應上的MaxMind網站
你當然需要適應你的用例。對我而言,特定的國家已經夠好了。如果您需要將特定的 IP列入白名單,我建議您創建一個包含白名單IP的數據庫表,然後在有人請求您的管理頁面時查詢該表。
如果您能確定所有「superadmins」都具有靜態IP地址,並且因爲他們的IP在半夜更改而不會無法使用應用程序,這可能是一種很好的保護。
其他方法與您提到的方法類似,是VPN,用戶在連接到VPN後將擁有私人池中的IP地址,並且您的應用程序只接受來自該池的連接(更好的是,您可以製作superadmin應用程序的apache/nginx虛擬主機僅偵聽VPN IP)。
VPN方面的另一個積極的方面是,除了過濾訪問之外,您還保護流量。
嗯我可以把這個「superadmin-login」放在VPN裏面,但是如果用戶想從家裏登錄它,會出現問題嗎?使用Mac地址怎麼樣?只有最多4人可以訪問這個地方。 –
VPN連接可以在任何地方進行,用戶只需要在家用計算機上設置VPN連接即可。它與撥號連接很相似(當談到安裝時),所以假設服務器端網絡上的VPN端口是打開的(路由器,防火牆等),用戶可以從任何地方連接(甚至可以從iPhone等)並啓用了vpn-passthrough。 –
謝謝!我會問服務人員這件事! –
我不得不說,這聽起來不像一個真棒想法
任何真正的安全傳統需要一個服務器組件,將提出以下建議:
一)使所有的登錄頁面通過https
b)中包括一個服務器技術諸如紅寶石/ PHP來執行以下操作:
摘要驗證 - > http://en.wikipedia.org/wiki/Digest_access_authentication
這基本上是
登錄細節存儲在一個數據庫(確保你只存儲密碼散列+鹽在數據庫中!)
PHP /紅寶石相比,登陸信息數據庫日誌詳細
一旦認證店這種驗證狀態爲消化餅乾
在這裏看到PHP實現:http://www.php.net/manual/en/features.http-auth.php
但嚴重的請請不要使用客戶端實現的安全性,這是一個壞主意
爲更多的安全問題和想法要注意看這裏 - >
學習如何驚人的邪惡和良好的黑客,以及如何阻止他們的計劃http://www.lulu.com/spotlight/owasp上常見的安全漏洞好書
http://w3af.org/understanding-html5-security
也是非常好的資源(可能是免費的PDF文件在線)
謝謝!我認爲我沒有寫得很清楚,但我從來沒有說過我需要擁有這個安全的管理員端客戶端。我只是表示公共前端位於BackboneJS代碼中,因此也是客戶端。 –
哈哈啊.... 我想我們都有些擔心那裏,祝你好運項目:) – aqm
'另一種真正安全的方式'阻止你在你的前端Javascript中使用它。在服務器端進行。 – Lloyd
用戶管理不是用於後端的任務,而不是前端? – Joseph
在你的javascript中的IP阻塞並不是非常有用,有人可以改變它的價值......爲了安全起見,你需要*讓後端驗證和限制所有內容,而不是你的前端js。 – gpgekko