Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Ajax jak zabezpieczyć ?
Qss
post
Post #1





Grupa: Zarejestrowani
Postów: 141
Pomógł: 7
Dołączył: 22.02.2009

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


Witam,

Zrobiłem pewna aplikacje gdzie dodawanie edycja i usuwanie oparte jest o ajax a później uświadomiłem sobie że to co zrobiłem jest to ekstremalnie niebezpieczne

Przykład bazy:

Tabela user
userID | nick | haslo

Tabela cos1
cos1ID | userID (FK) | jakiespole

Tabela cos2
cos2ID | cos1ID (FK) | jakiespole


Teraz funcja javasctipt
  1. function usun(id){
  2. // i tu przez ajaxa usuwa dane z tabeli cos2ID o zadanym id
  3. // i zapytanie po stronie php w stylu
  4. // DELETE FROM cos2 WHERE cos2ID = $_POST['id']
  5. }


Jeśli ktoś to zobaczy w podgladzie strony to z konsoli może wywołać funkcje i jako parametr podać dowolne ID które nawet nie należy do niego i usunąć komukolwiek pewne dane

To co wymyśliłem to przed usunięciem (oczywiście po stronie PHP) sprawdzić czy zadane id (poprzez tabele cos1) należy do userID zalogowanego użytkownika ale to tylko dodatkowe zapytania i obciążenie bazy
lub do tabeli cos2 dodac tez FK do usera co sprowadzało by się tylko do dopisania w zapytaniu WHERE userID = $_SESSION['idZalogowanego']

Tabela cos2
cos2ID | cos1ID (FK) | jakiespole | userID (FK)

Jakieś inne pomysły aby zachować strukturę bazy ? Bo przy takim rozwiązaniu baza traci trochę na spójności
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
markonix
post
Post #2





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Ajaxa zabezpiecza się tak samo jak zwykłe odwołania.

Np. nie ma znaczenia czy usuwasz dany wpis poprzez link:
?delete=10 (GET)
, przycisk
<button delete="10">Usuń</usuń> (AJAX)
czy POST.

We wszystkich przypadkach użytkownik może spreparować ID, czasem łatwiej (przy metodzie GET), czasem troszkę trudniej bo trzeba włączyć firebuga (POST, AJAX).
Jeżeli chcesz informować o braku autoryzacji to sprawdzasz to na początku, a jeżeli nie to możesz oprócz id przy usuwaniu dodać drugi warunek czy zalogowany jest równy autorowi/właścicielowi obiektu (nie rozumiem po co tu subquery).
Go to the top of the page
+Quote Post

Posty w temacie


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: 10.10.2025 - 12:50