[PHP][JS] Głosowanie za pomocą gwiazdek - bezpieczeństwo
: sob wrz 13, 2008 8:09 pm
Kod:
Chcę umożliwić także głosowanie użytkownikom z wyłączoną obsługą JS (AJAX). Chyba, że to bez sensu?
W przykładzie oceny są wysyłane metodą GET. Bardzo niebezpiecznie, bo użytkownik może zagłosować nieświadomie:
Formularz musi być koniecznie wysłany metodą POST. Tylko zostaje pytanie:
A. Zastosować alternatywny formularz dla użytkowników bez JS
B. Oprzeć głosowanie o <input type="image" />, ale prawdopodobnie tracę kontrolę nad gwiazdkami w CSS
C. Generować gwiazdki za pomocą JS, a domyślnie wyświetlać tylko ocenę z linkiem do alternatywnego <form> w <noscript>
D. Dołączyć arkusz CSS i wysłać kod HTML z gwiazdkami. Zignorować użytkowników bez JS.
Chociaż w przypadku POST też jest zagrożenie, że trafisz na stronę ze złośliwym skryptem JS. Tylko znacznie mniejsze.
Kod: Zaznacz cały
<ul class="rate avg3">
<li><a href="vote.php?rate=1" class="r1">1</a></li>
<li><a href="vote.php?rate=1" class="r2">2</a></li>
<li><a href="vote.php?rate=1" class="r3">3</a></li>
<li><a href="vote.php?rate=1" class="r4">4</a></li>
<li><a href="vote.php?rate=1" class="r5">5</a></li>
</ul>W przykładzie oceny są wysyłane metodą GET. Bardzo niebezpiecznie, bo użytkownik może zagłosować nieświadomie:
Kod: Zaznacz cały
<a href="vote.php?id=500&ocena=1">Cud na boisku - Polacy wygrali 5:0</a>
<img src="vote.php?id=4&ocena=5" /> - tak, z dowolnego miejsca w InternecieA. Zastosować alternatywny formularz dla użytkowników bez JS
B. Oprzeć głosowanie o <input type="image" />, ale prawdopodobnie tracę kontrolę nad gwiazdkami w CSS
C. Generować gwiazdki za pomocą JS, a domyślnie wyświetlać tylko ocenę z linkiem do alternatywnego <form> w <noscript>
D. Dołączyć arkusz CSS i wysłać kod HTML z gwiazdkami. Zignorować użytkowników bez JS.
Chociaż w przypadku POST też jest zagrożenie, że trafisz na stronę ze złośliwym skryptem JS. Tylko znacznie mniejsze.