对于一个庞大的项目,我们将制作一个" superadmin"登录(所有其他管理工作直接在前端),你可以改变很多事情。
由于安全性非常重要,我一直在考虑只允许具有特定IP的人进行连接。有没有人知道做同样的网站,它是否过于保护,或者你能推荐另一种真正安全的管理工作方式吗? 只有在Chrome或Firefox中有一些有用的功能时,我们才能为特定的浏览器制作它。
仅供参考,前端是javascript,html和css
答案 0 :(得分:1)
在客户端执行它是没有意义的,因为没有任何东西阻止攻击者修改/禁用你的JS。
因此,只有安全选项是服务器端。我自己用PHP系统做了这个。
更新:示例实施
在该项目中,我使用了GeoIP服务(如MaxMind的this one)
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的数据库表,然后在有人请求您的管理页面时进行查询。
答案 1 :(得分:1)
如果您可以放心,所有“超级拉丁语”将具有静态IP地址,并且不会因为他们的IP在半夜发生变化而无法使用应用程序,那么它可以提供良好的保护。
其他方法(类似于您提到的方法)是VPN,连接到VPN后的用户将拥有私有池中的IP地址,并且您的应用程序只接受来自该池的连接(更好的是,您可以创建apache / nginx vhost for superadmin应用程序仅在VPN ip上侦听。
VPN接近的另一个积极方面是,除了过滤访问权限之外,您还要保护流量。
答案 2 :(得分:1)
我不得不说,这听起来不是一个很棒的主意
任何真正的安全性传统上都需要服务器组件,建议如下:
a)通过https
提供所有登录页面b)包括服务器技术,如ruby / php,以执行以下操作:
摘要式身份验证 - &gt; http://en.wikipedia.org/wiki/Digest_access_authentication
基本上是
存储在db中的登录详细信息(确保只在db中存储密码哈希+ salt !!!)
php / ruby将登录详细信息与db log in details进行比较
经过身份验证后,将此身份验证状态存储为摘要cookie
请参阅此处了解php实现:http://www.php.net/manual/en/features.http-auth.php
但请认真请不要使用客户端实施的安全性,这是一个坏主意
了解更多安全问题和想法,请注意此处 - &gt;
http://w3af.org/understanding-html5-security
也是非常好的资源,用于了解邪恶和好黑客是多么令人惊讶,以及如何阻挠他们的计划
http://www.lulu.com/spotlight/owasp关于常见安全漏洞的好书(可能是免费的在线pdfs)