Readme.ge Blog

FB image FB image

IP-ების კონტროლი და დაცვა php-დან

ავტორი: ალექსანდრე თარიღი: Thursday, May 21st, 2009

ამ პოსტში მოკლედ შემოგთავაზებთ პატარა ფუნქციას რომელიც დიდი უნიკალურობით არ გამოირჩევა, მაგრამ გამოსადეგია და მარტივი. ამ ფუნქციის მეშვეობით შეგვიძლია კონკრეტული IP ან IP-ების კლასი ჩავკეტოთ ან დავუშვათ საიტზე, უფრო სწორედ სისტემაში, მაგალითად ვებ გვერდის ადმინ პანელში (რომელშიც შესვლა გვინდა დავუშვათ კონკრეტული IP-დან თუ IP-ების კლასიდან), ან კიდევ ვებ გვერდზე (სადაც გვინდა დავბლოკოთ კონკრეტული IP თუ IP-ების კლასი).

ამისთის თავიდანვე მაქვს IP-ების ჩამონათვალის მასივი – მაგალითად

1
$_ALLOWIPS = array('77.56.12.*','95.104.67.31');

ანუ აქ გვიწერია რომ ვემუშავებით აიპებს, რომლებიც შედის 77.56.12. კლასში და მეორე კონკრეტულ 1 IP-ს 95.104.67.31
ეხლა გადავხედოთ ქვემოთ მოცემულ დასრულებულ ფუნქციას –

1
2
3
4
5
6
7
8
9
10
function allowIp($allowIps){
    $tmp = array();
    $guestIp = getenv("REMOTE_ADDR");
    $guestIpLastClass = end(explode('.',$guestIp));
    foreach($allowIps as $key => $ip){
        $tmp[$key] = (end(explode('.',$ip))=='*') ? str_replace('*',$guestIpLastClass,$ip) : $ip;
        }
    return (in_array($guestIp,$tmp)) ? 1 : 0;
}
;

ფუნქციის მუშაობა მარტივია და შედგება შემდეგი საფეხურებისგან
1. გადავცემთ აიპების მასივს.
2.ვიღებთ კლიენტის IP-ს.
3.ვიღებთ კლიენტის IP-ის ბოლო კლასის ციფრებს (იმისათვის თუ ეს აიპი მოხვდება გადაცემული აიპების მასივის ელემენტში, რომელიც შეიცავს არა ერთ აიპს არამედ აიპების რაღაც გარკვეულ კლასს).
4.IP-ების მასივის ელემენტში, რომელიც მთავრდება “*”-ით ვანაცვლებთ *-ს მე-3 საფეხურიდან მიღებული ციფრებით (ანუ მასივის ელემენტი, რომელიც მოიცავს მთელ კლასს).
5. და ბოლოს თუ კლიენტის აიპი მოხვდა ახალ მიღებულ (ჩვენს შემთხვევაში $tmp) მასივში აბრუნებს 1-ს თუ არა – 0.

მაგალითად ამ ფუნქციის გამოძახება შეიძლება მოხდეს შემდეგნაირად

1
if (allowIp($_ALLOWIPS)==0) die();

ანუ თუ კლიენტის IP არ ემთხვევა ჩვენი მასივის რომელიმე 1 IP-ს მაინც მაშინ die() გამოუტანს ცარიელ გვერდს(ანა გავაკეთებთ ნებისმიერ სასურველ ექშენს).

თუ ამ ფუნქციაში

1
(in_array($guestIp,$tmp))

-ში ჩავამატებს !-ს ანუ მივიღებთ ასეთ სახეს

1
(!in_array($guestIp,$tmp))

მაშინ გამოგვივა შებრუნებული ფუნქცია, ანუ არათუ ვინ დავუშვათ სისტემაში არამედ ვინ არ დავუშვათ სისტემაში.

ეს არის და ეს
წარმატებულ IP კონტროლს გისურვებთ 🙂

კატეგორიებში: PHP, WEB, უბრალოდ მარტივი. |

დატოვე კომენტარი

...