Javascript 管理界面的IP白名单
对于一个大型项目,我们将进行“superadmin”登录(所有其他管理工作都直接在前端),在这里您可以更改很多内容 由于安全性非常重要,我一直在考虑只允许具有特定IP的人连接。有没有人知道网站也有同样的功能,是过度保护还是你能推荐另一种真正安全的管理方式? 只有在Chrome或Firefox中存在一些有用的可能性的情况下,我们才能为特定的浏览器制作它Javascript 管理界面的IP白名单,javascript,security,Javascript,Security,对于一个大型项目,我们将进行“superadmin”登录(所有其他管理工作都直接在前端),在这里您可以更改很多内容 由于安全性非常重要,我一直在考虑只允许具有特定IP的人连接。有没有人知道网站也有同样的功能,是过度保护还是你能推荐另一种真正安全的管理方式? 只有在Chrome或Firefox中存在一些有用的可能性的情况下,我们才能为特定的浏览器制作它 仅供参考,前端仅为javascript、html和css客户端操作没有意义,因为没有任何东西可以阻止攻击者修改/禁用JS 因此,只有安全选项是服务
仅供参考,前端仅为javascript、html和css客户端操作没有意义,因为没有任何东西可以阻止攻击者修改/禁用JS 因此,只有安全选项是服务器端。我自己用PHP中的CMS系统完成了这项工作 更新:示例实现 在那个项目中,我使用了GeoIP服务(比如来自MaxMind的服务)
函数geoIPRequest($ip){
$params=getopt('l:i:');
如果(!isset($params['l'])$params['l']='';
如果(!isset($params['i'])$params['i']=$ip;
$query='1https://geoip.maxmind.com/a?.http_build_查询($params);
$curl=curl_init();
curl_setopt_数组(
$curl,
排列(
CURLOPT_URL=>query$,
CURLOPT_USERAGENT=>MaxMind PHP,
CURLOPT_RETURNTRANSFER=>true
)
);
$countryCode=curl\u exec($curl);
if(curl_errno($curl)){
抛出新异常(
'GeoIP请求失败,错误号为'
.curl_errno($curl)
);
}
返回$countryCode;
}
$countryCode=geoIPRequest($\服务器['REMOTE\地址]);
if(!in_数组($countryCode,数组('DE','DK','EU','GB','SE')){
标题(“HTTP/1.0 403禁止”);
回应“你没有访问权”;
退出();
}
以上代码改编自MaxMind网站上的示例代码
当然,您需要根据您的用例调整它。对我来说,特定的国家已经足够好了。如果您需要将特定IP列入白名单,我建议您创建一个包含白名单IP的数据库表,当有人请求您的管理页面时,您可以查询这些IP。在客户端这样做是没有意义的,因为没有任何东西可以阻止攻击者修改/禁用您的JS 因此,只有安全选项是服务器端。我自己用PHP中的CMS系统完成了这项工作 更新:示例实现 在那个项目中,我使用了GeoIP服务(比如来自MaxMind的服务)
函数geoIPRequest($ip){
$params=getopt('l:i:');
如果(!isset($params['l'])$params['l']='';
如果(!isset($params['i'])$params['i']=$ip;
$query='1https://geoip.maxmind.com/a?.http_build_查询($params);
$curl=curl_init();
curl_setopt_数组(
$curl,
排列(
CURLOPT_URL=>query$,
CURLOPT_USERAGENT=>MaxMind PHP,
CURLOPT_RETURNTRANSFER=>true
)
);
$countryCode=curl\u exec($curl);
if(curl_errno($curl)){
抛出新异常(
'GeoIP请求失败,错误号为'
.curl_errno($curl)
);
}
返回$countryCode;
}
$countryCode=geoIPRequest($\服务器['REMOTE\地址]);
if(!in_数组($countryCode,数组('DE','DK','EU','GB','SE')){
标题(“HTTP/1.0 403禁止”);
回应“你没有访问权”;
退出();
}
以上代码改编自MaxMind网站上的示例代码
当然,您需要根据您的用例调整它。对我来说,特定的国家已经足够好了。如果您需要将特定IP列入白名单,我建议您创建一个包含白名单IP的数据库表,当有人请求您的管理页面时,您可以查询这些IP。在客户端这样做是没有意义的,因为没有任何东西可以阻止攻击者修改/禁用您的JS 因此,只有安全选项是服务器端。我自己用PHP中的CMS系统完成了这项工作 更新:示例实现 在那个项目中,我使用了GeoIP服务(比如来自MaxMind的服务)
函数geoIPRequest($ip){
$params=getopt('l:i:');
如果(!isset($params['l'])$params['l']='';
如果(!isset($params['i'])$params['i']=$ip;
$query='1https://geoip.maxmind.com/a?.http_build_查询($params);
$curl=curl_init();
curl_setopt_数组(
$curl,
排列(
CURLOPT_URL=>query$,
CURLOPT_USERAGENT=>MaxMind PHP,
CURLOPT_RETURNTRANSFER=>true
)
);
$countryCode=curl\u exec($curl);
if(curl_errno($curl)){
抛出新异常(
'GeoIP请求失败,错误号为'
.curl_errno($curl)
);
}
返回$countryCode;
}
$countryCode=geoIPRequest($\服务器['REMOTE\地址]);
if(!in_数组($countryCode,数组('DE','DK','EU','GB','SE')){
标题(“HTTP/1.0 403禁止”);
回应“你没有访问权”;
退出();
}
以上代码改编自MaxMind网站上的示例代码
当然,您需要根据您的用例调整它。对我来说,特定的国家已经足够好了。如果您需要将特定IP列入白名单,我建议您创建一个包含白名单IP的数据库表,当有人请求您的管理页面时,您可以查询这些IP。在客户端这样做是没有意义的,因为没有任何东西可以阻止攻击者修改/禁用您的JS 因此,只有安全选项是服务器端。我自己用PHP中的CMS系统完成了这项工作 更新:示例实现 在那个项目中,我使用了GeoIP服务(比如来自MaxMind的服务)
函数geoIPRequest($ip){
$params=getopt('l:i:');
如果(!isset($params['l'])$params['l']='';
如果(!isset($params['i'])$params['i']=$ip;
$query='1https://geoip.maxmi
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();
}