To jest tylko wersja do druku, aby zobaczyć pełną wersję tematu, kliknij TUTAJ
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

1.12.7 i starsze - Registration IP Checker

Quantic - 08-08-2011, 14:20
Temat postu: Registration IP Checker
Widziałem w propozycjach duże zainteresowanie taką modyfikacją, więc postanowiłem ją napisać. ;)

Kod:
##############################################################
## MOD Title:        Registration IP Checker
## MOD Author:       Quantic < xyloxer@gmail.com > http://forum.skinscripts.pl/quantic,u,1984.htm
## MOD Description:  Registration IP Checker uniemożliwia tworzenie multikont. Modyfikacja blokuje rejestrację nowych kont poprzez porównanie adresu IP osoby, która właśnie próbuje się zarejestrować, ze wszystkimi adresami IP użytkowników z bazy danych. Dodatkowo jest zabezpieczenie, które wykrywa niektóre rodzaje proxy. Dynamiczne IP Neostrady, kóre zaczyna się liczbą 83 specjalnie nie jest blokowane przez modyfikację. Nie miałoby to sensu, bo wystarczyłoby ponownie połączyć się z Internetem, a blokowałoby to niepotrzebnie adresy. Modyfikacja jest napisana w języku polskim i angielskim.
## MOD Version:      1.0.0
##               
## Installation Level:  Easy
## Installation Time:   ~3 minutes
## Files To Edit:       (3)
##                includes/usercp_register.php
##                language/lang_polish/lang_profile.php
##                language/lang_english/lang_profile.php
##
## License:             Ten plik udostępniony jest na licencji Creative Commons Uznanie autorstwa
##             - Na tych samych warunkach 3.0
##             http://creativecommons.org/licenses/by-sa/3.0/deed.pl
##############################################################
## Author Notes:
## Zaleca się zrobienie kopii plików, które trzeba edytować.
##############################################################


Co modyfikacja potrafi:
:arrow: Blokuje rejestrację dla osoby, której IP jest już w bazie danych.


Instrukcja: Instrukcja w archiwum RAR.

License:
Ten plik udostępniony jest na licencji Creative Commons Uznanie autorstwa – Na tych samych warunkach 3.0

maminowiec - 08-08-2011, 14:27

A jak ktoś ma sieciówke i to samo IP ? mod powinien rejestrować i wysyłać powiadomienie do admina.
Seba123 - 08-08-2011, 16:36

http://pl.wikipedia.org/w...ess_Translation
Quantic - 08-08-2011, 17:03

Podobnie jest z banowaniem. Jeśli się zbanuje konto, które jest z NAT-u to reszta kont z tej sieci też ma bana. Taka jest wada NAT-u. Jednak w modyfikacji można wykluczyć poszczególne numery IP (tak samo jak wykluczony jest zakres 83.*.*.*).

A jeśli ktoś chce, aby takie konta się rejestrowały, a następnie wysyłane byłoby powiadomienie na maila administratora to wystarczy zamienić tę linijkę:

Kod:
message_die(GENERAL_MESSAGE, $lang['ip_used'], '', __LINE__, __FILE__);


na funkcję mail()

i przesunąć cały kod (bez warunku - if ($mode == 'register')) pod tę linijkę:

Kod:
message_die(GENERAL_MESSAGE, $welcome_message);


@down: Podpis usunięty. ;)

Seba123 - 09-08-2011, 00:50

Quantic napisał/a:
83.*.*.*)
A czemu te 16777214 adresów IP ma jakiś specjalny przywilej ?
Quantic - 09-08-2011, 11:24

Cytat:
Dynamiczne IP Neostrady, kóre zaczyna się liczbą 83 specjalnie nie jest blokowane przez modyfikację. Nie miałoby to sensu, bo wystarczyłoby ponownie połączyć się z Internetem, a blokowałoby to niepotrzebnie adresy.

Seba123 - 09-08-2011, 13:10

To pragnę Cię poinformować, że zakres adresów IP Neostrady wynosi od 83.1 do 83.31, mając na uwadze ten fakt iż nie wszystkie adresy z powyższej puli są zmienne.

Dodatkowo zapomniałeś jeszcze o wielu innych zakresach Neostrady oraz innych operatorach ADSL, prze co owe sprawdzanie jest po prostu bezsensowne.

Dużo lepszy sposobem wykrycia dynamicznego adresu IP (o ile na serwer WWW jest włączona usługa HostnameLookups) będzie następujący kod
Kod:
if(strpos($_SERVER['REMOTE_HOST'], 'adsl') !== FALSE)
{
    // dynamiczny adres IP
}

Quantic - 09-08-2011, 13:30

Hmm. Dzięki. Przydatny kod. ;)

Z tym, że musi być włączona ta funkcja: HostnameLookups. Staram się, aby kod był jak najbardziej uniwersalny. Jednak kod, który podałeś jest chyba dobrym rozwiązaniem, bo nie ma sposobu, aby wykluczyć wszystkie dynamiczne adresy IP, podając ich zakres. Ja podałem ten zakres, który jest (tak myślę) najpopularniejszy. W takim razie najlepiej wykluczyć od 83.1 do 83.31(wiem, że nie wszystkie są dynamiczne, ale trzeba by wiedzieć, które są, więc chyba najlepiej tak zostawić), bo innych dynamicznych adresów nie znam.

Edit:
Jeśli funkcja "HostnameLookups" jest popularna to myślę, że to całkiem dobre rozwiązanie. Jednak nie wiem ile serwerów ma włączoną tę funkcję.

Seba123 - 09-08-2011, 14:40

Można to sprawdzić prostym kodem PHP
Kod:
<?php echo $_SERVER['REMOTE_HOST']; ?>


Więcej informacji tu -> http://php.net/manual/en/...bles.server.php & http://www.php.net/manual...thostbyaddr.php

[ Dodano: 09-08-2011, 16:06 ]
Jednakże na myśl przychodzi mi jeszcze kwestia problematycznych serwerów DNS, przez co można zauważyć zwolnienia witryny, bądź kompletne zatrzymanie rejestracji (wczytująca się strona).

Rozwiązaniem może być użycie funkcji zaproponowanej przez jednego z użytkowników oraz OpenDNS

A to tylko jedno z wielu rozwiązań ;)

PS. Co do hostname lookups - funkcja gethostbyaddr chyba nie ma tego ograniczenia, aczkolwiek problem mogą tworzyć serwery DNS, gdyż domyślnie ta opcja nie ma opcji timeout'u ;)

Quantic - 09-08-2011, 19:16

$_SERVER['REMOTE_HOST']; - ten kod na moim serwerze nie działa
gethostbyaddr() - ten działa, ale może wystąpić problem z timeout
gethostbyaddr_timeout() - funkcja byłaby dobra, gdyby zwracała nazwę hosta, a nie adres IP

Jak na razie chyba najlepszym rozwiązaniem będzie zastosowanie funkcji gethostbyaddr()

Kod:
$host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
if(strpos($host, 'adsl') !== FALSE) {
...
}


i dla tych, którzy mają słabe DNSy, moje pierwsze rozwiązanie. Chyba, że ktoś ma inny pomysł?

piootrek16 - 12-08-2011, 17:30

Fajnie jeśli ta modyfikacja będzie kontynuowana i ulepszana, a na pewno będę z niej korzystał.
Quantic - 13-08-2011, 16:29

Jasne, że będzie. Dobrze byłoby, gdybyście pisali tu swoje pomysły. ;)
Azuel - 30-12-2012, 21:59

A czy nie szłoby przerobić tej modyfikacji na trochę dokładniejszą?

Otóż nie wiem jakim kosztem i czy jest w ogóle taka możliwość.

Powiedzmy że jak użytkownik loguje się na forum, to dodaje mu się do ciasteczek przeglądarki jakiś standardowy kod(formułka) witryny który zapisze się w ciasteczkach na stałe, oczywiście aby był możliwy do zmiany w późniejszym czasie żeby nie był taki sam na wszystkich stronach z forum Przema.
Następnie gdzieś w bazie danych zostanie zapisane IP użytkownika do tego sprawdzenia że użytkownikowi o taki adresie IP zostało zapisane takie cookie.

Dodatkowo Jakaś rubryka na forum która wychwyci konta sprawdzając IP oraz czy już na to IP było zapisane cookies. (Ktoś mądry napewno ma sposób) No i zapisanie ich w jakiś panel w PA.

Tak żeby Administrator forum widział kto jest z tego samego IP i tego samego komputera logowany na forum, bo czasem zdarza się że bracia z jednego kompa wejdą, żeby była możliwość wyjaśnić a nie od razu blokować takie IP.

Mam taki ewenement na forum gdzie trzech użytkowników ma takie samo IP a dwoje z nich rzekomo mieszkają w Warszawie i Krakowie bo trzeci miasta nie podał, i chcę w jakiś sposób sprawdzić czy
nie jest to Multikonto.
Mógłbym się co prawda opierać na dwóch różnych miastach bo to już jest dowód, ale kto ma te multikonto czy Użytkownik1 czy Uzytkownik2 który nie ma wpisanego miasta.

Jest taka możliwość stworzenia lub napisania takiej modyfikacji / skryptu?



Powered by phpBB modified by Przemo © 2003 phpBB Group