Skocz do zawartości
Jaev

Failed to exeute query

Rekomendowane odpowiedzi

Hasło hashuje Whirlpool'em, raczej to tego powód, ale nie wiem dlaczego. W bazie też mam ustawione 129 znaków.

 

	native WP_Hash(buffer[], len, const str[]);
	new Hash_Pass[129];
	                new query[128];
	                WP_Hash(Hash_Pass, sizeof Hash_Pass, inputtext);
	                
	                format(query, sizeof(query), "INSERT INTO users (`name`, `pass`) VALUES('%s', '%s')", name, Hash_Pass);
	                mysql_real_escape_string(Hash_Pass, Hash_Pass);
	                
	                mysql_query(query);
	                mysql_free_result();
	 
	 
	[09:52:15] [MySQL] Error (0): Failed to exeute query. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''0363AD641D04A01A12395B580523FD2EF48E7AA151FDF5B7B1B8C722ED75E320B1FACA2DE10' at line 1.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

btw. czemu najpierw formatujesz hasło do zapytania, a potem sprawdzasz je przez mysql_real_escape_string? :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Może troche off-top ale poradzę Ci, zarówno jak i każdemu innemu porzucić pomysł używania Whirlpoola czy innych algorytmów, które może są dobre ale są zbyt skomplikowane i "cięzkie". Whirlpool zajmuje aż 512 bitów, czyli 128 znaków co w pawn przekłada się na 4*128 bajtów by przechować sam tekst, w bazie danych trzymasz kolejne 128 lub więcej bajtów, samo hashowanie na pewno jest bardziej czasochłonne. Przynajmniej w sampie, takie "bezpieczeństwo" nie jest wcale potrzebne, bo zwykłe MD5+Sól poradzi sobie z tzw. rainbow tables itd. a oszczędzi ci znaczną ilość miejsca w bazie danych i w samym skrypcie oraz uprości przetwarzanie. Najlepiej moim zdaniem wykorzystać  algorytn SHA256 który Kalcor zaimplementował w którejś tam wersji 0.3.7, jest bardzo bezpieczny i o połowę mniejszy od Whirlpoola. Sam z niego korzystam, na początku też próbowałem jakoś super zabezpieczać hasła stosując wiele algorytmów naraz (w tym WP), jednak po nabraniu trochę doświadczenia można stwierdzić że równie dobrze mogłem wykorzystać proste MD5 lub inny algorytm z losową solą i bezpieczeństwo byłoby takie samo, a wszystko byłoby dużo optymalniejsze.

http://wiki.sa-mp.com/wroot/index.php?title=SHA256_PassHash&redirect=no

jako parametr salt podajesz sól, czyli np. UID gracza zamienione na tekst (funkcja valstr) lub jakiś losowy tekst zapisany w gmie/bazie danych, lub oba naraz. Przy sprawdzaniu po prostu dodajesz (strcat) do wpisanego przez gracza hasła tą sól/jego UID (nie polecam używać nicku, kiedyś możesz dodać komendę do zmiany nicków i ktoś nie wbije już na konto bo hash będzie zawierał jego stary nick)

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×