对于一个巨大的项目,我们将做一个“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