Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][inne]Zabezpieczenie przed zmianą zmiennej GET w adresie URL
odkuszacz
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 4.01.2011

Ostrzeżenie: (0%)
-----


Witam,
produkuję serwis, w którym będą między innymi prezentowane artykuły użytkowników.
Jedną z podstawowych funkcjonalności będzie możliwość edycji artykułu. Tyle wprowadzenia - teraz do celu.
Po zalogowaniu na swój profil i wyborze edycji artykułu mam adres np.: http://www.jakasnazwa.pl/edycja_artykulu.php?idart=45678.
Użytkownik może w pasku adresu przeglądarki zmienić idart i z dużym prawdopodobieństwem wpisać wartość odpowiadającą już zapisanemu w bazie artykułowi innego użytkownika i wtedy może go pozmieniać. Czy moglibyście podpowiedzieć jak to zabezpieczyć?

Za pomoc przedszkolakowi z góry wielkie dzięki (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Po pobraniu artykułu z bazy sprawdź czy jego autor to aktualnie zalogowana osoba. Jeśli nie to zrób co uważasz (np. die('giń!')). Tyle.

Innym rozwiązaniem jest dodanie drugiego warunku do samego zapytania czyli WHERE id_artykulu = 45678 AND id_autora = X gdzie X to identyfikator aktualnie zalogowanego użytkownika.
Go to the top of the page
+Quote Post
thek
post
Post #3





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Ja najczęściej robię tak:
1) User ma prawa admina/moda -> zapytanie jest z WHERE id = id_artykulu
2) user to szarak: -> zapytanie jest z WHERE id = id_artykulu AND owner_id = id_usera (najczęściej z sesji)
Zawsze to ciutkę mniej rzeczy do przesłania między bazą i skryptem.
Go to the top of the page
+Quote Post
Magic WWW
post
Post #4





Grupa: Zarejestrowani
Postów: 123
Pomógł: 32
Dołączył: 9.09.2010
Skąd: Brzeg

Ostrzeżenie: (0%)
-----


Dodam, żeby dodać w PHP sprawdzanie czy idart jest liczbą (IMG:style_emoticons/default/smile.gif)

  1. if(!is_numeric($_GET['idart']))
  2. {
  3. exit('Error');
  4. }
Go to the top of the page
+Quote Post
thek
post
Post #5





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Ja zazwyczaj mam bardziej rozbudowane...
  1. if( isset( $_GET['idart'] ) && ctype_digit( $_GET['idart'] ) && $_GET['idart'] > 0 )

lub zamiast isset daję
  1. array_key_exists( 'idart', $_GET )
Go to the top of the page
+Quote Post
odkuszacz
post
Post #6





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 4.01.2011

Ostrzeżenie: (0%)
-----


Dzięki wielkie za pomoc. Działa (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
mat-bi
post
Post #7





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

Ostrzeżenie: (0%)
-----


A nie łatwiej przeprowadzić rzutowanie?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.09.2025 - 16:55