• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Zabezpieczenie skryptu - metoda GET

Object Storage Arubacloud
0 głosów
351 wizyt
pytanie zadane 14 października 2016 w PHP przez hiper007 Stary wyjadacz (11,270 p.)
zamknięte 16 października 2016 przez hiper007

Witam mam pytanko klikam w link do odpowiedzi na dana wiadomość prywatna:

 

Przechodzę do podstrony odpowiedzi na wiadomość

w pasku url pojawia mi sie adres strony:

contactodp.php?view=19e181bdb902becd2e45f3e186fb7f2a&viewodp=7d1fb598637ed2f3f0a045d4f7d7fb7c&#odp7d1fb598637ed2f3f0a045d4f7d7fb7c

gdzie view-to indedyfikator dla tematu

viewodp-to indedyfikator dla odpowiedzi

W jaki sposob zabezpieczyć ten skrypt, ze jezeli ktoś wejdzie i zmieni na inny indentyfikator tematu lub odpowiedzi recznie poprzez wpisanie go w paku url to przekieruje go do podstrony z wywietlonym bledem np.

require_once "connect.php";
		mysqli_report(MYSQLI_REPORT_STRICT);
	
		try 
		{
			$polaczenie = new mysqli($host, $db_login, $db_pass, $db_name);
			if ($polaczenie->connect_errno!=0)
			{
				throw new Exception(mysqli_connect_errno());
			}
			else
			{
				if(isset($_GET['view']))
			   {
			$view=$_GET['view'];
			
			$rezultat=$polaczenie->query("SELECT view FROM message WHERE view='$view'");
			if (!$rezultat) throw new Exception($polaczenie->error);
	
			$ilu_userow=$rezultat->num_rows;
			if($ilu_userow==0)
				{
					$_SESSION['blad27']="Nie znaleziono wiadomości!";
					header('Location: forum.php');
					exit();
			
			
				$rezultat->close();
								
				}
				
			
				}	

						
						$polaczenie->close();
			}
					
		}
				catch(Exception $e)
				{
							//echo '<br />Informacja developerska: '.$e;
					echo '<span style="color:red; font-size:12px;">'.$_SESSION['serwer']="Błąd serwera! Przepraszamy za utrudnienia!".'</span>';
						
				}

Tu np. zrobilem ze jak wpisze inny ale nie istniejacy indendyfikator to przekieruje go do innej podstrony z bledem ale chce zeby tak bylo jak zmieni na obojetnie jaki inny idendyfikator nawet istniejacy w bazie... bo przeciez wiadomosci nie mozna wyslac do innego uzytkownika ani jako odpowiedz na inny temat... ;)

komentarz zamknięcia: Problem rozwiązany

3 odpowiedzi

+1 głos
odpowiedź 14 października 2016 przez CzikaCarry Szeryf (75,340 p.)
wybrane 16 października 2016 przez hiper007
 
Najlepsza

Według mnie, system prywatnych wiadomości lepiej jest rozwiązać metodą sesyjną. Dlaczego?

Otóż dlatego, że prywatne wiadomości są prywatne, nikt inny oprócz nas nie powinien mieć do nich dostępu, zatem po co nam linki odsyłające do tych wiadomości? A tak poza tym to ciężej jest zrobić atak na sesjach niż na GET'ach. Jak wcielić w życie takie rozwiązanie (przerobienie kodu z getów na sesje zajmie Ci max 10 min, a jak ułatwi Ci życie...)?

Po prostu tworzymy zmienne $_SESSION['view'] i $_SESSION['viewodp']; w które wkładamy odpowiednie wartośći (19e181bdb902becd2e45f3e186fb7f2a, 7d1fb598637ed2f3f0a045d4f7d7) zamiast do GET'ów.

A tak poza tym PDO > MYSQLI :) Życzę powodzenia!

0 głosów
odpowiedź 14 października 2016 przez Vento Pasjonat (17,120 p.)
Sprawdasz id zalogowanego użytkownika i id użytkowników którzy mogą pisać do siebie wiadomości z. Jeżeli użytkownik ma inne ID niż Ci którzy mają uprawnienia do wysyłania sobie wiadomości poprzez ten identyfikator to skrypt się wykona.
0 głosów
odpowiedź 14 października 2016 przez pajos96 Obywatel (1,350 p.)
Moja propozycja jest taka : w sesji przechowujesz oczywiście id obecnego usera.

W bazie masz wiadomość z userem targetowym i userem wysyłającym.

W momencie otworzenia wiadomości sprawdzasz czy user w sesji ma te same id co user targetowy, jeżeli tak - otwierasz ją, jeżeli nie wysyłasz stronę błędu z kodem 403.

Podobne pytania

0 głosów
2 odpowiedzi 312 wizyt
pytanie zadane 21 września 2017 w PHP przez mi-20 Stary wyjadacz (13,190 p.)
0 głosów
2 odpowiedzi 323 wizyt
pytanie zadane 13 sierpnia 2018 w PHP przez KRY008 Nowicjusz (190 p.)
0 głosów
1 odpowiedź 186 wizyt
pytanie zadane 23 kwietnia 2016 w PHP przez niezalogowany

92,565 zapytań

141,418 odpowiedzi

319,604 komentarzy

61,952 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...