Propozycja zmian w systemie komentarzy - IP HASH

Witam,

Mam propozycję zmian w systemie dodawania konentarzy na Vortalu. Obecnie każdego użytkownika wystawiającego komentarz identyfikuje podana przez niego nazwa, jego USER AGENT i dodatkowo każdy wpis komentarza ma podaną datę i godzinę - tak jak widać :

nazwa_uzytkownika 12.06.2006, 17:54

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)

Ja mam lepszą propozycję - trochę myślałem o tym jak ukrócić wpisywanie się tych samych użytkowników pod różnymi ksywkami i doszedłem do wniosku że podawanie IP użytkownika to nie jest dobry pomysł, gdyż wprowadziłoby to na vortalu totalną inwigilację - każdy bałby się napisać coś “niegrzecznego” w obawie przed konsekwencjami.

Więc wpadłem na ZNACZNIE lepszy pomysł. Obok nazwy użytkownika mógłby się pojawiać WYGENEROWANY NA PODSTAWIE IP NIEODWRACALNIE ZASZYFROWANY HASH ( http://pl.wikipedia.org/wiki/Hash ). Teraz identyfikacja użytkownika na vortalu wyglądałaby na przykład tak :

nazwa_uzytkownika | IPHASH : HG-VM-L6-G0 | 12.06.2006, 17:54

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)

Pozwoliłem sobie napisać w PHP skrypt generujący taki hash. Funkcja jest naprawdę EKSTRASZYBKA (prawdopodobnie najszybsza z funkcji hashujących), a to dlatego że w działaniu wykorzystuje

TYLKO działania dodawania i odejmowania. Powinna także być dość odporna na kolizje, jako że ilość danych wejściowych jest bardzo duża (większa od długości samego IP). Oczywiście odporność na kolizje zależy najbardziej od DŁUGOŚCI hasha sprecyzowanego zmienną $hashlen.

Myślę że sama implementacja tego nie będzie problemem (prosta jak dwa młotki i pół gwoździa :D), a jeśli jest, to mogę to zrobić za was - wystarczy że wyślecie do mnie skrypt wstawiający komentarze. Od razu mówię, że NIE TRZEBA dodawać dodatkowego POLA DO TABELI MYSQL, żeby zapisać w nim identyfikację. Można to zrobić prościej.

Jets to dobra funkcja hashująca, a jest dobra dlatego, że zmiana KTÓREGOKOLWIEK BITU (lub dodanie lub odjęcie bitu) w ciągu wejściowym powoduje otrzymanie CAŁKOWICIE INNEGO HASHU - np :

hash dla “127.0.0.1” to “1W-16-Z7-Q4”

ale hash dla “127.0.0.2” to już “UL-BI-JE-4J”

oraz “227.0.0.1” daje “2C-ZR-3C-3K”

Kod skryptu poniżej

http://www.geocities.com/the_soofman19/newcomment.txt

EDIT :

Jeśli ciąg XX-XX-XX-XX jest za długi, to można zmienić długość ciągu (wartość zmiennej $hashlen) na 6 - wtedy hash przyjmie postać XX-XX-XX, ale oczywiście będzie mniej odporny na kolizje.

Ile razy prosiłem, żeby wszelkie skrypty i kody HTML czy PHP wstawiać do notatnika a na forum wklejać w postaci linku do pliku (który uprzednio wyślemy na serwer jakiś). Forum się rozwala…

Link wyciąłem, proszę dostosować się do prośby.

Poza tym, vortal i forum są w trakcie przebudowy, szykowana jest nowa wersja, więc chyba nie ma sensu zmieniać na chwilę czegoś, co będzie zupełnie inaczej wyglądało niedługo…

OK. Zrobione.

Nie ma problemu. Jak coś to przepiszę ten skrypt z PHP na DOWOLNY język. Bułka z masłem.

ech… według mnie to jest niepotrzebne, po co aż tak kombinować? Jak ktoś się boi czegoś napisać, to niech nie pisze.

Teraz nie chodzi o to czy się boi. Obecnie chodzi o to, że ludzie piszą po kilka komentarzy pod różnymi nickami.

Szczerze mówiąc mi się pomysł podoba. Od razu będzie widać (bo ja to widzę po stronie administracyjnej), że niektórzy mają zacięcię do pisania sprzecznych opinii (czytaj: usiłują polemizować sami ze sobą) zmieniając tylko nicka.

Pozwolisz BlackMan, że trochę sobie przerobię Twój skrypt do swoich potrzeb?

Złączono Posta : 13.06.2006 (Wto) 11:24

Oczywiście nie obiecuje, że skrypt zostanie wrzucony, najpierw sobie przetestuje jak to działa pod sporym obciążeniem.

Złączono Posta : 13.06.2006 (Wto) 11:50

Pierwsze wrażenia po odpaleniu skryptu dokładnie w takiej postaci w jakiej go podałeś :slight_smile:

[13-Jun-2006 11:48:14] PHP Notice: Undefined variable: GJkhr6smND in C:\Inetpub\wwwroot\dobreprogramy\lisek.php on line 7

Ahhhh SORRY SORRY zapomniałem włączyć NOTICE.

U mnie w PHP mam włączone opcje pokazywania błędów E^ERROR i E^WARNING - takie rzeczy jak indeksy tabeli poza zakresem pomijam - ważne że funkcja chodzi. Co mnie obchodzą jakieś NOTICE. Napisałem już tysiąc skryptów nie patrząc na NOTICEs i jakoś wszystkie działają i mają się świetnie :smiley:

Wyłączcie NOTICE i po problemie…

Chcesz powiedzieć że ten nagły PAD vortalu to PRZEZE MNIE ?? Czuję się zaszczycony :smiley:

Ależ oczywiście. Jest na mojej osobistej licencji GNU/GPL. Zrzekam się wszelkich roszczeń i zezwalam na używanie i dowolne modyfikacje skryptu w dowolnych komercyjnych lub niekomercyjnych aplikacjach.

Jednocześnie zastrzegam że to JA I NIKT INNY jest autorem tego skryptu. Stworzyłem kilka róznych algorytmów szyfrujących i hashujących na bazie tego prostego algorytmu, ale to już inna historia…

Jeden z tych algorytmów mam nawet zamiar opatentować, ale nie ten :smiley:

EDIT:

PS.

Lisek, rozumiem że celowo dodałeś to “0” przed każdym hashem ?

Przykro mi ale powód był genialnie banalny, “zdechł” kabel zasilający od serwera. Jakby mi ktoś coś takiego powiedział to bym nie uwierzył :slight_smile:

To się chyba rozumie “samo przez się”…

… o widzisz, bawiłem się tym skryptem i zostało mi takie dziwadło, zaraz usunę.

Ale żeby skrypt podmienić też trzeba wyłączyć portal na parę sekund, czy może macie jakiś automatyczny mechanizm replikacyjny (w sensie w trakcie modernizacji server przełącza się na zapasowy ) ??

No żeby nie było że skądś zerżnałem…

Hahaha a już myślałem że lubisz asymetrię i wolisz żeby pierwszy człon miał 3 znaki :smiley:

Hm… a to w jakim konkretnie celu?

Konkretnie klaster NLB :slight_smile:

Właśnie? po co ?

Przecież o ile się nie mylę to jak połączy się przez FTP (Lisek pewnie tak robi) z serwerem na którym jest dokument (strona) w którym jakiś skrypt trzeba zmienić, dodać coś etc. to można wybrać opcję Edytuj i wprowadza się zmiany w dokumencie i potem spyta czy chce się zmienić plik to potwierdza się i jest ok, bez wyłączania serwera (przynajmniej ja takie opcje mam jak łączę się w TC) :slight_smile:

Można też jeszcze jak dokument jest na komputerze to w jakimś edytorze wprowadzić zmiany i potem podmienić plik przez FTP.

No 8)

Wreszcie będzie można łatwo zobaczyć kto “sam ze sobą walczy” :smiley:

Ja też używam skryptów PHP na serverze i gdy wrzucę plik na FTP to wszystkie skrypty które wykorzystują dany skrypt bezpośrednio lub przez require() przestają działać w protokole HTTP na moment. Trzeba poczekać z 5sekund po uploadzie aż skrypt zacznie normalnie działać - jest to skutek tego, że server musi mieć czas na zapisanie plików na FTP najpierw, a potem może dopiero udzielać do niego dostępu w protokole HTTP.

Uwierz mi - SPRAWDZONE na zwykłym hostingu za ~1000 zł rocznie.

Co innego jak ma się KlASTER :smiley:

Możesz zrobić mi przyjemność i wyjaśnić jak taki klaster działa ? Powiedzmy że masz zmieniony skrypt PHP i chcesz go uploadować na server, nie przerywając działania vortalu a ni na moment. Co dokładnie robisz ?

Jest problem z dynamicznym IP (neostrada, kablówki). Za każdym razem generuje się inny IPHASH. Wystarczy tylko zmienić sesję co zajmuje pięć sekund. Czyli jak ktoś Chce się pod kogoś podszywać to i tak sobie poradzi.

Hash jest generowany po IP, więc jeśli masz inny to inny też będzie HASH. Niestety na to za dużo się nie poradzi.

Ten IPHASH nie jest ZABEZPIECZENIEM tylko UTRUDNIENIEM a przy okazji można sprawdzić na starszych komentarzach kto był taki mądry.

Lisek, to powiesz mi w końcu jak działa klaster ?

Serio, umieram z ciekawości :D.

Generalnie sajt i forum działa na trzech serwerach. Są to dokładne kopie, czyli na każdym jest dokładnie to samo. Jeśli na jakimkolwiek serwerze coś zmienię od razu (nie znam dokładnego czasu ale jest praktycznie natychmiastowe) zawartość zmienia się na każdym z serwerów.

ISA Server decyduje na który z serwerów-kopii dany user zostanie przekierowany. Jest to uzależnione od zajętości danego serwera, liczby odwołań do niego itd… Jeżeli na jednym z nich coś zmieniam ISA chwilowo go nie bierze pod uwagę przy przekierowaniu następnie wysyła userów tylko do niego i w tym czasie zmienia zawartość na reszcie serwerów. Po całej operacji wszystko wraca do normy.

Jak na razie system ten sprawuje się całkiem dobrze.

  1. Fajny bajer. Ciekawe ile taki system kosztuje ?? Napewno nie poniżej 50.000…

  2. Można coś takiego skonfigurować mając 3 zwykłe komputery, odpowiedni sprzęt sieciowy i ROZDZIELNIK przerzucający użytkowników na różne servery ??

Czy raczej Trzeba kupować cały zestaw od odpowiedniej firmy ??