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
function usun(id){ // i tu przez ajaxa usuwa dane z tabeli cos2ID o zadanym id // i zapytanie po stronie php w stylu // DELETE FROM cos2 WHERE cos2ID = $_POST['id'] }
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