2011-01-26 9 views
5

Widziałem formularz, który zawiera następujące ukryte elementy. Ten pierwszy jest oczywiście tokenem bezpieczeństwa dla CSRF, ale jaki jest drugi. To mniej więcej obraz. Jakie dodatkowe bezpieczeństwo dałoby mi? i jak mogę je wygenerować?Dlaczego ten dziwny symbol w ukrytym elemencie?

<input type="hidden" value="G2k2DNFer3z2NR0zYO" name="key"> 
<input type="hidden" value="☃" name="_face"> 
<input type="hidden" value="home" name="ref_source"> 
+5

Dziwne, że to się nazywa '_face', ponieważ [to w rzeczywistości bałwanek] (http://unicodesnowmanforyou.com). – BoltClock

+0

@BoltClock Cool, ma nawet własną stronę internetową! – samquo

+0

@BoltClock Symbol bałwanka jest w rzeczywistości jednym z [wielu znaków w bloku "Różne symbole"] (http://unicode.org/charts/PDF/U2600.pdf) zgodnie z definicją standardu Unicode. :-) –

Odpowiedz

9

To BAŁWAN jest rzeczywiście znak Unicode (U + 2603) i prawdopodobnie jest używana do sprawdzenia, czy klient używa odpowiedniego kodowania znaków (prawdopodobnie UTF-8), czy nie, na przykład:

$isUtf8 = $_POST['_face'] === "\xE2\x98\x83"; 
+0

to wspaniała odpowiedź! +1 – Harish

+0

Rozumiem. Czy jest to coś, co wszyscy powinniśmy robić w naszych formach? Pytam, ponieważ strona internetowa otrzymywałaby te informacje dopiero po przesłaniu formularza przez użytkownika, więc gdy strona jest renderowana po raz pierwszy, informacje te są niedostępne. Dlaczego strona internetowa potrzebuje tego później? – samquo

+0

@samquo: Są pewne sugestie, aby to zrobić, aby odróżnić kodowanie UTF-8 od innych kodowań znaków (patrz na przykład ["Unicode i inne śmieszne postacie" na dev.mysql.com] (http://dev.mysql.com /tech-resources/articles/4.1/unicode.html)). Ale nie jestem pewien, czy to naprawdę konieczne. Zasadniczo klient używa kodowania znaków określonego w atrybucie ['accept-charset'] (http://www.w3.org/TR/html4/interact/forms.html#adef-accept-charset) lub kodowanie tego samego znaku, z którego obsługiwano dokument formularza. – Gumbo

Powiązane problemy