Viewstate nếu bạn không cần tham chiếu nó trong tập lệnh phía máy khách. Một trường ẩn nếu bạn làm. Ngoài ra, hãy xem xét rằng nếu dữ liệu nhạy cảm, ViewState được mã hóa theo mặc định, trong khi trường ẩn, theo mặc định, lưu trữ nó dưới dạng văn bản thuần túy hiển thị cho bất kỳ ai biết cách xem nguồn.
Sửa
lưu ý mỗi @ Andrew Hare về câu trả lời của riêng mình, tôi chỉnh sửa này. Đó là một sự phân biệt đủ quan trọng cần lưu ý. Tôi ghét ai đó nghĩ rằng họ "an toàn" bằng cách sử dụng Viewstate dựa trên sự giám sát của tôi.
Viewstate KHÔNG được mã hóa theo mặc định, nó được lưu trữ dưới dạng mã hóa Base-64. Nó có thể được giải mã khá dễ dàng, vì vậy sử dụng Viewstate vì nó được mã hóa theo mặc định là không hợp lệ. Nó tốt hơn so với văn bản thuần túy, nhưng không phải cho bất cứ ai có khả năng google "giải mã Viewstate" hoặc "giải mã Viewstate".
Vì vậy, đừng dựa vào Viewstate để bảo vệ thông tin ẩn của bạn trong mã phía máy khách.
Bài viết here cho biết cách mã hóa chính xác. (nhưng cũng cảnh báo về các vấn đề hiệu suất).
Tôi không chắc mình đồng ý ... Viewstate được mã hóa khi một trường ẩn, theo mặc định, không phải là Trừ khi tôi bỏ sót điều gì đó. Tôi thường tin tưởng câu trả lời của bạn, vì vậy tôi đặt cược tôi đang thiếu một cái gì đó. – David
Không, bạn làm cho một điểm tốt - ViewState có thể được mã hóa (nhưng nó không phải là luôn luôn - theo mặc định nó chỉ đơn giản là base-64 được mã hóa). Đẹp bắt! :) –
Cảm ơn bạn! Bạn nói đúng về base-64, tất nhiên rồi. Đó là một sự khác biệt quan trọng. Tôi đang chỉnh sửa câu trả lời của mình để phản ánh điều này. – David