![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 11.09.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Mam proglem nad którym już trochę główkuję i przeszukuje fora w poszukiwaniu satysfakcjonującej mnie odpowiedzi. Mamy panel administratora np. i są wyświetlone artykuły na stronie w ładnej tabelce. Na końcu każdego wiersza są dostępne możliwe operacje na hiperłączach, edycja i usuwanie. Niech chodzi mi tutaj o samą edycję co o sposób usuwania. Na samym poczatku napisałem skrypt z wykorzystaniem GET który usuwał artykuł po kliknięciu usun w tym samym wierszu. Oczywiście zauważyłem informacje na pasku adresu z końcówką /delete.php?id=9. Postanowiem sprawdzić, czy wpisując inny numer id w adresie usunie mi inny link. Otóż tak się stało. Więc moje pierwsze pytanie brzmi, jak najlepiej się przed tym zabezpieczyć? Widziałem też wykorzystanie checkboxów do usuwania wybranych rekordów, wtedy można by było zaznaczyć tylko jeden i z głowy. Wszystko fajnie, tylko wymagane jest, by checkbox znajdował się w formularzu? Będzie działało coś takiego, jeśli tabele obejmę w ramy <form ...> </form> i przy każdym wierszu znajdzie się checkbox? Ktoś może mi podsunąć pomysł, jak ewentualnie poprawnie wykonać coś takiego? Jakoś trzeba podać dalej, który checkbox jest zaznaczony i przydzielony do danego artykulu. A może macie jakiś lepszy sposób do usuwania rekordu, w przyjemny i pożyteczny sposób? (IMG:style_emoticons/default/wink.gif) Pozdrawiam. Ten post edytował kaczkazdw 17.09.2012, 19:26:17 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) ![]() ![]() |
Każdy user ma kolumnę user_level, od 1 do 5:
1. super admin 2. admin 3. moderator 4. zarejestrowany user 5. gość Każdy post ma kolumnę author_id, więc post może zostać usunięty tylko przez autora lub przez usera o user_level 1 (superadmin) lub przez admina lub moderatora - w zależności jak skonfigurujesz sobie uprawnienia. Tak to jest zrobione w praktycznie każdym szanującym się softcie. Metoda POST jest o tyle dobra, że przeglądarka nie będzie cachować zapytań POST, nie zostaną one zapisane w logach serwera www czy zacachowanie przez serwer proxy, także używanie POST do takich operacji jest jedynym wyjściem, upieranie się przy GET obnaża brak profesjonalizmu. Kolejna sprawa to zabezpieczenia przez CSRF, jeśli rozumiesz jak działa atak CSRF, bez problemu wprowadzisz stosowane zabezpieczenia. https://www.owasp.org/index.php/Cross-Site_..._Forgery_(CSRF) P.S A tak na marginesie, to rekordów z bazy się nie usuwa, tylko zmienia status (IMG:style_emoticons/default/tongue.gif) Powody są dwa: 1. Jeśli zechcesz odzyskać to co usunąłeś, to leżysz, bo rekordu nie ma 2. Jeśli któregoś dnia zechcesz sporządzić statystykę, np. ile postów napisano w danym okresie czasu, a ile usunięto, to leżysz bo usunąłeś rekord i informacja została utracona. Ten post edytował wNogachSpisz 18.09.2012, 13:15:49 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 8.10.2025 - 14:34 |