Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Aby nikt nie wrzucił bezpańskich komentarzy
Forum PHP.pl > Forum > PHP
WebCM
Jak ochronić skrypt przed dodawaniem komentarzy niepowiązanych z żadnym elementem (artykułem, plikiem, itd.)?

Jest 5 typów kategorii (choć może ich być więcej): artykuły, pliki, newsy, zdjęcia i linki. To by nie sprawiło problemu, bo informacje o strukturze typów (np. nazwa tabeli w bazie danych) przechowuję w pliku .ini. ALE: Można też komentować inne elementy (np. sondę, użytkownika, wolną stronę, inny dowolny moduł), które mogą mieć całkiem inną strukturę. Po prostu komponent komentarzy jest dostępny dla innych modułów.

Aktualnie komentarze można edytować na osobnej podstronie. W adresie URL są przekazywane parametry:
* typ elementu - numeryczny, np. 1 dla artykułu, 10 dla użytkownika, itd.
* ID elementu - numeryczny

Uprawnieni mogą edytować lub usuwać komentarze. Wtedy w adresie URL podajemy tylko ID komentarza.

Złośliwy internauta może podmienić te wartości w formularzu za pomocą narzędzia Firebug. W ten sposób system doda komentarz, który nie jest powiązany z żadnym elementem.

Stąd pytanie - jak chronić się przed takim atakiem?

@nexis: tylko jak mam sprawdzić, czy komentarz będzie miał powiązanie?
nexis
W adresie powinieneś przekazać jedynie ID, bo wszystkie dane pochodzące z zewnątrz są z zasady niebezpieczne i w łatwy sposób do podmiany. Następnie sprawdzaj sobie rodzaj i generuj odpowiedni komunikat przy próbie dodania niewłaściwego komentarza.
WebCM
Tylko jak mam sprawdzić, czy komentarz będzie miał powiązanie? Muszę znać przynajmniej nazwę tabeli.

Co myślicie o tym, aby dodawanie komentarza było możliwe tylko spod artykułu / nowości / ankiety / ...? Czyli formularz jest wyświetlany pod komentowaną pozycją oraz poprzednimi komentarzami. Nie można by było przejść na osobną podstronę - tam byłaby możliwa tylko edycja przed uprawnione osoby.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.