ДТ РАБОТИЛНИЦА

Регистрирайте безплатен акаунт днес, за да станете член! След като влезете, ще можете да участвате в този сайт, като добавяте свои собствени теми и публикации, както и да се свързвате с други членове чрез вашата лична пощенска кутия!

  • Здравейте, майстори на заваряването, кодирането и автомобилните технологии!

    Аз съм Тони Ангелчовски, създател на dtgarage.eu - вашата нова дигитална работилница. С визията за място, където можем да обменяме идеи, да се обучаваме и да растем заедно, dtgarage.eu събира любители и професионалисти от света на заваряването, автомобилите, IT и уеб кодирането.

    В dtgarage.eu, ние сме общност, която е готова да помага и подкрепя всеки свой член. Ние вярваме, че всеки от нас може да допринесе за развитието на тази платформа, независимо дали е професионалист или ентусиаст.

    Само една стъпка ви дели от това да станете част от нашата общност - регистрацията. Регистрирайте се сега и открийте света на dtgarage.eu - мястото, където можем да създаваме и растем заедно.

    Приключението започва тук. Добре дошли в DTGARAGE.EU!

php Забрана достъпа на IP (Банване на IP)

toni

Administrator
Staff member
Забрана достъпа на IP (Банване на IP)
PHP:
<?php
$banip = array (
    '192.168.7.1',
    '192.168.7.2',
    '192.168.7.3'
);
 
$ip = $_SERVER['REMOTE_ADDR'];
 
for ($i = 0; $i < 3; $i++) {
 
    if ($ip == $banip[$i]) {
        echo "Вие имате забрана за този сайт!";
        exit ();
    }
    else {
        echo "no match";
    }
}
?>

Този скрипт проверява дали IP адресът на потребителя ($_SERVER['REMOTE_ADDR']) се съдържа в масива $banip, който съдържа блокираните IP адреси. Ако адресът на потребителя е блокиран, скриптът извежда съобщението "Вие имате забрана за този сайт!" и спира изпълнението на скрипта. Ако адресът на потребителя не е блокиран, скриптът извежда съобщението "no match".
 
Last edited:
Ето още един пример:


PHP:
<?php
  // Списък с IP адреси, които искате да блокирате
  $blocked_ips = array(
    '192.0.2.1',
    '198.51.100.2',
    '203.0.113.3',
  );

  // Проверка дали IP адресът на потребителя е в списъка на блокираните IP адреси
  if (in_array($_SERVER['REMOTE_ADDR'], $blocked_ips)) {
    // Ако е, забраняваме достъпа, като извеждаме съобщение за грешка 403
    header('HTTP/1.0 403 Forbidden');
    echo 'Your IP address is blocked.';
    exit;
  }

  // Тук може да продължите с останалата част от вашия скрипт...
?>

Този скрипт използва $_SERVER['REMOTE_ADDR'], за да получи IP адреса на потребителя. След това проверява дали този IP адрес е в списъка на блокираните IP адреси. Ако е, скриптът извежда съобщение за грешка 403 и спира изпълнението.

Трябва да имате предвид, че този метод може да не работи правилно, ако потребителите използват прокси сървъри или VPN, защото $_SERVER['REMOTE_ADDR'] ще върне IP адреса на прокси сървъра или VPN, а не реалния IP адрес на потребителя.
 
Двата скрипта са много подобни по функционалност, но има някои разлики в тяхната структура и начин на работа.

Първият скрипт, използва цикъл for за проверка на всяко IP в списъка на блокираните IP адреси. Ако IP адресът на потребителя съвпада с някой от блокираните IP адреси, скриптът извежда съобщение и спира изпълнението. Ако не съвпада, скриптът извежда съобщение "no match". Този скрипт не извежда HTTP статус код при блокиране на IP адрес.

Вторият скрипт, използва функцията in_array() за проверка дали IP адресът на потребителя е в списъка на блокираните IP адреси. Ако е, скриптът извежда HTTP статус код 403 и съобщение за грешка, и след това спира изпълнението.

И двата скрипта правят по същество едно и също нещо - блокират достъпа до сайта за определени IP адреси. Изборът между тях зависи от вашите конкретни нужди и предпочитания по отношение на функционалността и структурата на кода.
 
Ето как би изглеждал по-сложен PHP скрипт, който забранява достъпа на определени IP адреси и логва блокираните опити за достъп:

PHP:
<?php
// Списък с блокирани IP адреси
$blocked_ips = ['192.168.1.1', '192.168.1.2', '192.168.1.3'];

// Получаване на IP адреса на потребителя
$user_ip = $_SERVER['REMOTE_ADDR'];

// Проверка дали IP адресът на потребителя е в списъка с блокирани IP адреси
if (in_array($user_ip, $blocked_ips)) {
    // Логване на блокирания опит за достъп
    file_put_contents('blocked_access_log.txt', $user_ip . ' - ' . date('Y-m-d H:i:s') . "\n", FILE_APPEND);
    // Извеждане на съобщение за блокиран достъп
    echo "Вашият IP адрес е блокиран.";
    // Прекратяване на изпълнението на скрипта
    exit;
}

// Продължаване на изпълнението на скрипта, ако IP адресът на потребителя не е блокиран
echo "Добре дошли!";
?>

Този скрипт съхранява запис във файл всеки път, когато блокиран IP адрес се опита да получи достъп. Така можете да проследите кога и кои блокирани IP адреси се опитват да получат достъп до вашата страница.
 
Този скрипт е разширен вариант на първоначалните примери, които ви предоставих. Той включва възможността да блокирате както отделни IP адреси, така и цели IP диапазони. Освен това, скриптът логва всеки опит за достъп от блокиран IP адрес или диапазон.



PHP:
<?php
// Забранени IP диапазони
$blocked_ranges = [
    '192.0.2.0/24',
    '198.51.100.0/24',
    '203.0.113.0/24',
];

// Забранени конкретни IP адреси
$blocked_ips = [
    '192.0.2.1',
    '198.51.100.2',
    '203.0.113.3',
];

// Получаване на IP адреса на потребителя
$user_ip = $_SERVER['REMOTE_ADDR'];

// Проверка дали IP адресът на потребителя е в списъка на забранените IP адреси
if (in_array($user_ip, $blocked_ips)) {
    log_attempt($user_ip);
    deny_access();
}

// Проверка дали IP адресът на потребителя е в някой от забранените IP диапазони
foreach ($blocked_ranges as $range) {
    if (ip_in_range($user_ip, $range)) {
        log_attempt($user_ip);
        deny_access();
    }
}

// Функция за логване на блокираните опити за достъп
function log_attempt($ip) {
    $file = 'blocked_attempts.txt';
    $current = file_get_contents($file);
    $current .= $ip." attempted to access the site on ".date("Y-m-d H:i:s")."\n";
    file_put_contents($file, $current);
}

// Функция за отказ на достъп
function deny_access() {
    header('HTTP/1.0 403 Forbidden');
    echo 'Your IP address is blocked.';
    exit;
}

// Функция за проверка дали даден IP адрес е в определен IP диапазон
function ip_in_range($ip, $range) {
    list($subnet, $bits) = explode('/', $range);
    $ip = ip2long($ip);
    $subnet = ip2long($subnet);
    $mask = -1 << (32 - $bits);
    $subnet &= $mask; // nb: in case the supplied subnet wasn't correctly aligned
    return ($ip & $mask) == $subnet;
}

// Тук може да продължите с останалата част от вашия скрипт...
?>

Ето как работи:
  1. Задавате списъци с блокирани IP адреси ($blocked_ips) и диапазони ($blocked_ranges).
  2. При всяка заявка, скриптът проверява дали IP адресът на потребителя е в някой от тези списъци.
  3. Ако е, скриптът записва опита за достъп във файл (blocked_attempts.txt) и изпраща HTTP статус код 403 (Forbidden), за да блокира достъпа.
  4. Функцията ip_in_range се използва за проверка дали даден IP адрес е в определен IP диапазон. Тя преобразува адресите и диапазоните в двоичен формат и използва битови операции, за да установи дали даден IP адрес е в рамките на диапазона.
  5. Ако IP адресът на потребителя не е блокиран, скриптът просто продължава с изпълнението на останалата част от кода (която трябва да добавите след този скрипт).
Този скрипт предоставя по-гъвкав и подробен контрол върху блокирането на IP адреси и диапазони, и е полезен, ако имате проблеми с нежелан трафик от определени IP адреси или диапазони.
 
Сигурността на уебсайта е от ключово значение за гарантиране на доверието на потребителите и предотвратяването на злоупотреби. Блокирането на IP адреси или диапазони от IP адреси е една от техниките, които може да се използват за подобряване на сигурността на уебсайта. Това може да бъде особено полезно при забелязване на подозрителна активност от определен IP адрес или при желание за ограничаване на достъпа от определена географска област.

Значение на сигурността на уебсайта
Сигурността на вашия уебсайт е от основно значение за поддържане на доверието на вашите потребители и за предотвратяване на злоупотреби. Една от техниките, които можете да използвате, е блокирането на IP адреси или диапазони от IP адреси. Това може да бъде полезно, ако забележите подозрителна активност от определен IP адрес или ако искате да предотвратите достъп от определена географска област.

Примери за реални ситуации
Нека да ви дам няколко примера. Представете си, че забелязвате увеличено трафик от определен IP адрес и този трафик изглежда е автоматизиран (бот). Можете да използвате техниката за блокиране на IP адреси, за да спрете този трафик и да предотвратите потенциално нежелано натоварване на вашия сървър. Или може би имате уебсайт, който е предназначен само за потребители от определена страна или регион. В този случай, може да решите да блокирате IP диапазони, които не са от този регион.

Разширяване на скриптовете
Скриптовете, които показахме, са базови примери, които можете да адаптирате за вашите специфични нужди. Например, може би ще искате да добавите функционалност, която ви позволява да добавяте или премахвате IP адреси от списъка за блокиране динамично, вместо да трябва да редактирате скрипта всеки път. Или може би искате да добавите функция, която автоматично блокира IP адреси, от които идва подозрителен трафик.

Алтернативи
Има и други начини да блокирате IP адреси. Например, ако използвате Apache уеб сървър, можете да използвате файла .htaccess, за да блокирате IP адреси. Ако използвате Nginx, можете да направите това в конфигурационния файл на сървъра. Освен това, има и множество плъгини за различни CMS (Content Management System) системи, като WordPress, които ви позволяват да блокирате IP адреси директно от административния интерфейс.

Заключение
Блокирането на IP адреси е мощен инструмент за подобряване на сигурността на вашия уебсайт, но трябва да се използва внимателно. Винаги трябва да се стремите към баланс между защитата на вашите ресурси и предоставянето на безпрепятствен достъп до вашите услуги за колкото е възможно повече потребители. Неправилното или прекомерното използване на блокиране на IP адреси може да доведе до ложно положителни[1] блокирания, които могат да отблъснат законни потребители от вашия уебсайт или услуга.

Глосарий [1]:

Ложно положителни: Това е термин, използван в контекста на сигурност и системи за откриване. Описва ситуациите, в които система за сигурност или откриване блокира или сигнализира за потенциална заплаха, която всъщност не е реална заплаха - затова е "ложна". "Положителна" в този контекст означава, че системата е открила "нещо", но в този случай това "нещо" е ложно или невярно.Прочети повече

 
Last edited:
Ето примерен код, който можете да добавите във файла .htaccess, за да блокирате определен IP адрес:
Code:
# Блокиране на конкретен IP адрес
Deny from 192.168.0.100

Заменете 192.168.0.100 с желания от вас IP адрес, който искате да блокирате.

Ако искате да блокирате цял диапазон от IP адреси, можете да използвате CIDR нотация. Например, ако искате да блокирате диапазона от 192.168.0.0 до 192.168.0.255, можете да използвате следния код:

Code:
# Блокиране на IP диапазон
Deny from 192.168.0.0/24

Това ще блокира всички IP адреси в този диапазон. Можете да промените числото след */ *за да блокирате по-широк или по-тесен диапазон.
Моля, обърнете внимание, че редактирането на файловете .htaccess може да има сериозен ефект върху функционалността на вашия уебсайт. Уверете се, че сте запознати със съществуващите настройки и осъществете резервно копие на файла, преди да внесете промени.
 
Направо ми се приисква да стана програмист. :p(y)

Разбирането на програмирането е предизвикателство, но вълнуващата част е, че всяко начало е трудно. Ако ви се приисква да се научите на програмиране, имате безброй ресурси на разположение. Онлайн курсове, уроци и ръководства могат да ви помогнат да започнете своята програмистка пътека. Примерно, Python е отличен език за начинаещи, тъй като има приятен и разбираем синтаксис. Можете да използвате Python, за да създадете непосредствен удар в заваряването или да откриете ново професионално призвание в областта на програмирането. Нека вашият интерес и любопитство ви водят напред в това вълнуващо пътешествие към програмирането.
 
Last edited:
Top Bottom