Javascript 管理界面的IP白名单

Javascript 管理界面的IP白名单,javascript,security,Javascript,Security,对于一个大型项目,我们将进行“superadmin”登录(所有其他管理工作都直接在前端),在这里您可以更改很多内容 由于安全性非常重要,我一直在考虑只允许具有特定IP的人连接。有没有人知道网站也有同样的功能,是过度保护还是你能推荐另一种真正安全的管理方式? 只有在Chrome或Firefox中存在一些有用的可能性的情况下,我们才能为特定的浏览器制作它 仅供参考,前端仅为javascript、html和css客户端操作没有意义,因为没有任何东西可以阻止攻击者修改/禁用JS 因此,只有安全选项是服务

对于一个大型项目,我们将进行“superadmin”登录(所有其他管理工作都直接在前端),在这里您可以更改很多内容

由于安全性非常重要,我一直在考虑只允许具有特定IP的人连接。有没有人知道网站也有同样的功能,是过度保护还是你能推荐另一种真正安全的管理方式? 只有在Chrome或Firefox中存在一些有用的可能性的情况下,我们才能为特定的浏览器制作它


仅供参考,前端仅为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();
}