2011-01-26 27 views
5

Aşağıdaki gizli öğelere sahip bir form gördüm. İlki açıkça CSRF için bir güvenlik belirtecidir, ancak ikincisi ne. Bu az çok bir görüntü. Hangi ek güvenliği bana verir? ve nasıl bir tane oluştururum?Gizemli öğedeki bu garip sembol neden

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

Bu '_face' denilen garip çünkü (aslında bir kardan adam) (http://unicodesnowmanforyou.com). – BoltClock

+0

@BoltClock Cool, hatta kendi web sitesi var! – samquo

+0

@BoltClock Kardan adam sembolü, aslında Unicode standardı tarafından tanımlanan [Çeşitli Semboller ”bloğundaki birçok karakterden (http://unicode.org/charts/PDF/U2600.pdf) biridir. :-) –

cevap

9
kardan adam Unicode (2603 U +) bir karakter aslında bu

ve muhtemelen müşteri, örneğin uygun bir karakter kodlamasını (muhtemelen UTF-8) veya kullanır olmadığını test etmek için kullanılır:

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

bu harika bir cevap! +1 – Harish

+0

Anladım. Yani bu hepimizin formlarımızda yapmamız gereken bir şey mi? Web sitesi bu bilgiyi yalnızca kullanıcı formu gönderdikten sonra alacağı için soruyorum, bu yüzden sayfa ilk kez oluşturulduğunda, bu bilgi kullanılamaz. Web sitesi bundan sonra neden buna ihtiyaç duyabilir? – samquo

+0

@samquo: UTF-8'in diğer karakter kodlamalarından ayrı olarak anlatılmasını öneren bazıları vardır (örneğin, bkz. Dev.mysql.com'daki [Unicode ve Diğer Komik Karakterler ”) (http://dev.mysql.com) /tech-resources/articles/4.1/unicode.html)). Ama bunun gerçekten gerekli olup olmadığından emin değilim. Genel olarak, istemci ya ['accept-charset' özniteliğinde] belirtilen karakter kodlamasını kullanır (http://www.w3.org/TR/html4/interact/forms.html#adef-accept-charset) veya form belgesinin sunulduğunu kodlayan aynı karakter. – Gumbo