Security 在不使用nginx.conf的情况下,如何阻止不受信任的IP访问Drupal管理员登录页面?

Security 在不使用nginx.conf的情况下,如何阻止不受信任的IP访问Drupal管理员登录页面?,security,drupal-7,Security,Drupal 7,最近我完成了这个任务,做了很多Rnd。每个人都建议我在nginx中使用location block,比如: location = /user { include /path/to/trusted-ips.txt; deny all; } 但由于某些nginx重写规则,它不起作用。我已经使用drupal表单钩子实现了另一个解决方案,并与您共享。函数钩子表单变更(&$form,&$form\u state,$form\u id){ function hook_form_alter

最近我完成了这个任务,做了很多Rnd。每个人都建议我在nginx中使用location block,比如:

location = /user {
    include /path/to/trusted-ips.txt;
    deny all;
}
但由于某些nginx重写规则,它不起作用。我已经使用drupal表单钩子实现了另一个解决方案,并与您共享。

函数钩子表单变更(&$form,&$form\u state,$form\u id){
function hook_form_alter (&$form, &$form_state, $form_id) {
        if($form_id == 'user_login') {
        $forbidden = "<head><title>403 Forbidden</title></head><body><center><h1>403 Forbidden</h1></center><hr><center>nginx</center></body>";
        $allowed_ip_file = '/path/to/trusted-ips.txt';
        $allowed_ip_file = fopen($allowed_ip_file, "r") or die("Unable to open file!");
        $allowd_ip_arr = array();
        while(! feof($allowed_ip_file)) {
            $line = fgets($allowed_ip_file);
            if (preg_match('/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/', $line, $ip_match)) {
                $allowd_ip_arr[] = $ip_match[0];
            }
        }
        fclose($allowed_ip_file);
        if(!in_array($_SERVER['REMOTE_ADDR'], $allowd_ip_arr)) {
            http_response_code(403);
            echo $forbidden; exit();
        }
    }
}
如果($form\u id=='user\u login'){ $probled=“403禁止403禁止
nginx”; $allowed_ip_file='/path/to/trusted ips.txt'; $allowed_ip_file=fopen($allowed_ip_file,“r”)或die(“无法打开文件!”); $allowd_ip_arr=array(); 而(!feof($allowed_ip_file)){ $line=fgets($allowed\u ip\u file); if(preg_match('/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/',$line,$ip_match)){ $allowd_ip_arr[]=$ip_match[0]; } } fclose($allowed\u ip\u file); if(!in_数组($_服务器['REMOTE_ADDR'],$allowd_ip_arr)){ http_响应_代码(403); echo$禁止;退出(); } } }
尝试使用 此模块允许管理员将对站点的访问限制为管理员定义的一组IP地址