←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] Problem z pluginem ( mysql )

Zablokowany

  • +
  • -
speedkill - zdjęcie speedkill 16.10.2011

Siemka mam taki problem z pluginem na mysql że wpis czasem się podwoi czasem po zmianie mapy komuś się to zresetuje.
Więc gdybyście mogli zobaczyć o co chodzi ;)
oto fragment zapisu i odczytu :
public mysqload(id)
{
	#if defined Mysql
	new name[32], szTemp[512]
	get_user_name(id, name, 31)	
	new Data[1]
	Data[0] = id
	
	format(szTemp,charsmax(szTemp),"SELECT * FROM `Skoki` WHERE (`Skoki`.`name` = '%s')", name)
	SQL_ThreadQuery(g_SqlTuple,"register_client",szTemp,Data,1)
	#endif
}
public register_client(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
	#if defined Mysql
	if(FailState == TQUERY_CONNECT_FAILED)
	{
		log_amx("Load - Could not connect to SQL database.  [%d] %s", Errcode, Error)
	}
	else if(FailState == TQUERY_QUERY_FAILED)
	{
		log_amx("Load Query failed. [%d] %s", Errcode, Error)
	}
	new id
	id = Data[0]
	if(!SQL_MoreResults(Query))
	{
		wczytaj(id)
		new name[32]
		get_user_name(id, name, 31)
		new szTemp[512]
		format(szTemp,charsmax(szTemp),"INSERT INTO `Skoki` ( `name` , `skoki`, `ranga`)VALUES ('%s',0,'%s');",name,ranga[id])
		SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp)
	}
	else 
	{
		skoki[id]         = SQL_ReadResult(Query, 1)
		return PLUGIN_HANDLED
		
	}
	return PLUGIN_HANDLED
	#endif
}
public mysqlsave(id)
{
	#if defined Mysql
	new szTemp[512]
	new name[32]
	get_user_name(id, name, 31)
	
	wczytaj(id)
	format(szTemp,charsmax(szTemp),"UPDATE `Skoki` SET `skoki` = %d,`ranga` = '%s' WHERE `Skoki`.`name` = '%s';",skoki[id],ranga[id], name)
	SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp)
	#endif
}
Pozdrawiam speedkill ;)
Dziękuje z góry za pomoc
Użytkownik speedkill123 edytował ten post 16.10.2011 21:54
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 16.10.2011

na pewno nick powinien zostać zabezpieczony przed SQL Injection
z tego co widzę to zanim zapiszesz coś wczytujesz, a tak nie powinno być jeśli używasz wątków (SQL_ThreadQuery)

Co poradzić?

dodaj slashe przed specjalnymi znakami ' \ itd oraz zablokuj zapis jeśli nie wczytano

więcej nie powiem dopóki nie pokażesz reszty kodu, bo zwyczajnie nie widać błędu
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 17.10.2011

Nick gracza może zawierać \ ? Z tego co wiem, to gra blokuje takie nicki, choć nie wiem jak to jest w przypadku, gdy nick z \ dodamy do naszego cfg.
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 17.10.2011

Na pewno może zawierać ' a to najłatwiejszy sposób na injection
Odpowiedz

  • +
  • -
speedkill - zdjęcie speedkill 17.10.2011

R3X , tu masz cały kod jest on rozbity na pliki inl wiem jest on nie optymalny itp :D
Hasło takie jak twój tytuł użytkownika :)
Ps.Sorki R3X że prosiłem o pomoc na steam :]

Załączone pliki

  • Załączony plik  R3X.rar   4,54 KB   21 Ilość pobrań

Użytkownik speedkill123 edytował ten post 17.10.2011 15:21
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 17.10.2011

Na pewno może zawierać ' a to najłatwiejszy sposób na injection

A tym to ja wiem, chodziło mi tylko o samo \ ;]
Odpowiedz

  • +
  • -
speedkill - zdjęcie speedkill 18.10.2011

Poradziłem sobie ;)
Dziękuje za wypowiedzi wyżej po + panowie :]
Można close
Odpowiedz

  • +
  • -
Onyke - zdjęcie Onyke 18.10.2011

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, Dołączona grafika raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Odpowiedz
Zablokowany