2011-01-26 37 views
5

Tôi đã nhìn thấy một biểu mẫu có các yếu tố ẩn sau đây. Cái đầu tiên rõ ràng là một mã thông báo bảo mật cho CSRF, nhưng cái thứ hai là CSRF. Đó là nhiều hơn hoặc ít hơn một hình ảnh. Điều gì bảo mật thêm nó sẽ cho tôi? và làm cách nào để tạo một tài khoản?Tại sao biểu tượng lạ này trong phần tử ẩn

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

Lạ rằng nó được gọi là '_face', bởi vì [nó thực sự là một người tuyết] (http://unicodesnowmanforyou.com). – BoltClock

+0

@BoltClock Cool, anh ấy thậm chí còn có trang web của riêng mình! – samquo

+0

@BoltClock Biểu tượng người tuyết thực sự là một trong số [nhiều ký tự trong khối "Ký hiệu Linh tinh"] (http://unicode.org/charts/PDF/U2600.pdf) theo định nghĩa của tiêu chuẩn Unicode. :-) –

Trả lời

9

Đó TUYẾT thực sự là một nhân vật trong Unicode (U + 2603) và nó có lẽ là sử dụng để kiểm tra xem khách hàng sử dụng một mã hóa thích nhân vật (có thể là UTF-8) hay không, ví dụ:

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

đây là một câu trả lời tuyệt vời! +1 – Harish

+0

Tôi hiểu. Vì vậy, đây là một cái gì đó tất cả chúng ta nên làm trong các hình thức của chúng tôi? Tôi hỏi vì trang web sẽ chỉ nhận được thông tin này sau khi người dùng gửi biểu mẫu, vì vậy khi trang được hiển thị lần đầu tiên, thông tin này không khả dụng. Tại sao trang web có thể cần nó sau đó? – samquo

+0

@samquo: Có một số đề xuất thực hiện việc này để báo cho UTF-8 biết cách mã hóa ký tự khác (xem ví dụ [“Unicode và các ký tự hài hước khác” trên dev.mysql.com] (http://dev.mysql.com /tech-resources/articles/4.1/unicode.html)). Nhưng tôi không chắc liệu điều đó có thực sự cần thiết hay không. Vì nói chung, máy khách sử dụng mã hóa ký tự được chỉ định trong thuộc tính ['accept-charset'] (http://www.w3.org/TR/html4/interact/forms.html#adef-accept-charset) hoặc cùng một mã hóa ký tự mà tài liệu biểu mẫu được phân phối cùng. – Gumbo

Các vấn đề liên quan