Запретить доступ к сайту из некоторых стран

Статус
В этой теме нельзя размещать новые ответы.

Juri

Мой дом здесь!
Заблокирован
Регистрация
5 Окт 2007
Сообщения
1.064
Реакции
200
  • Автор темы
  • Заблокирован
  • #1
Интересует такой вопрос, как можно закрыть доступ к сайту из некоторых стран, точнее разрешить всего несолькольким, а остальным закрыть, особенно нужно закрыть для германии и Америки. Понимаю что есть системы типа geoip но поиск по форуму рещультатов не дал, можно ссылки или примеры. заранее спасибо
 
  • Автор темы
  • Заблокирован
  • #3
Спасибо конечно но .htaccess получается больше 3 мегабайт, как это скажется на работе сервера и сайта в целом?

Если быть точным то нужно что б сайт был доступен только посетителям с этих стран

Россия
Азербайджан
Беларусь
Грузия
Казахстан
Узбекистан
Украина
 
сделать/найти класс, который по входящему ip определяет страну и дальше уже решает, блокировать или пускать дальше.
 
вот вполне сносная база geoip (сам пользуюсь).


сорри но php я не знаю, скажу на примере C#.

по теме, нужно экспортировать базу в sql server/mysql/etc, потом скажем в default.master сверять это дело - брать ип юзера (Request.UserHostAddress) потом спомощью методов (см. ниже) узнать страну пользователя, и если она нам подходит или нет то блочить или пропустить. как-то так.


несколько методов для работы:

Код:
        /// <summary>
        /// конвертирует ip-адрес в ip-номер
        /// </summary>
        /// <param name="ip">ip-адрес</param>
        /// <returns></returns>
        public string geoipusers(object ip)
        {
            int number = IPAddressToNumber(Convert.ToString(ip));
            string res = GetUserCountry(number);
            if (Convert.ToString(ip).StartsWith("127.0") || Convert.ToString(ip).StartsWith("192.168") || Convert.ToString(ip).StartsWith("10.19"))
                return ip + " (локальный ip)";
            if (res == null)
                return ip + " (страна неизвестна)";
            else
                return ip + " (" + res + ")";
        }
        public int IPAddressToNumber(string IPaddress)
        {
            string[] arrDec;
            int num = 0;
            if (IPaddress != "")
            {
                arrDec = IPaddress.Split('.');
                num = (int.Parse(arrDec[3])) + (int.Parse(arrDec[2]) * 256)
                + (int.Parse(arrDec[1]) * 65536) + (int.Parse(arrDec[0]) * 16777216);
            }
            return num;
        }
        /// <summary>
        /// возвращает страну посетителя по номеру ip
        /// </summary>
        /// <returns></returns>
        /// <param name="number">ip-номер</param>
        public string GetUserCountry(int number)
        {
            SqlCommand cmd = new SqlCommand(string.Format("SELECT countryname FROM [IpToCountry] where '{0}' between beginingip and endingip", number));
            return (string)Db.ExecuteScalar(cmd);
        }
 

Вот, принцип блокирования по IP на PHP.
В файл input.txt ложим список блокированных IP.
Вот база IP в формате CSV
 
А кто мешает использовать тот же Для просмотра ссылки Войди или Зарегистрируйся

Выбрать страны, которые хочешь разрешить, создаешь htacees, а потом просто меняешь местами allow и deny


Т.е. вместо
<Limit GET HEAD POST>
order allow,deny
deny from 196.22.12.0/22
allow from all
</LIMIT>

будет

<Limit GET HEAD POST>
order deny,allow
deny from all
allow from 196.22.12.0/22
</LIMIT>
 
  • Автор темы
  • Заблокирован
  • #8
Всем спасибо, оптимальное решение, кстати бесплатное было найдено тут

база обновляется рас в месяц, качество очень достойное, предлогают много инфы, есть примеры кода. не сочтите за пиар...
 
  • Нравится
Реакции: swer
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху