IP-ების კონტროლი და დაცვა php-დან
ამ პოსტში მოკლედ შემოგთავაზებთ პატარა ფუნქციას რომელიც დიდი უნიკალურობით არ გამოირჩევა, მაგრამ გამოსადეგია და მარტივი. ამ ფუნქციის მეშვეობით შეგვიძლია კონკრეტული 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 კონტროლს გისურვებთ 🙂