8

Tất nhiên, tôi biết rằng xác thực phía máy chủ là PHẢI.Vì vậy, có an toàn để xác thực biểu mẫu ở phía máy khách không?

Tôi đang sử dụng jQuery để xác thực các mục nhập biểu mẫu và sử dụng jquery ajax để thực hiện xác thực phía máy chủ (PHP) cùng một lúc. Vì vậy, tôi đoán nó có thể được an toàn vì nó xác nhận cho cả hai bên trong khi javascript được kích hoạt.

Vâng, đây là vấn đề của tôi ...

Nhưng nếu người dùng có Javascript bị vô hiệu trên trình duyệt của mình và nếu một số kẻ xấu cố gắng làm một cái gì đó xấu từ chỉnh sửa kịch bản client-side của tôi?

Vì tôi đang thực hiện xác thực phía máy chủ thông qua jquery ajax và tôi đang lập kế hoạch không xác thực chúng trực tiếp trong tập lệnh php (action = "some.php") ngay cả khi javascript của người dùng được bật.

Vậy ... hiện nó vẫn an toàn không?

Xin lỗi vì tiếng anh xấu của tôi, hy vọng bạn không phiền.

+1

Có thể trùng lặp: http://stackoverflow.com/questions/3483514/why-is-client-side-validation-not-enough/ – RTB

+2

Wow một số điều tôi nghĩ rõ ràng. Không có thắc mắc mọi người bị tấn công thường xuyên như vậy. Chết tiệt. – rook

Trả lời

13

Không, không an toàn. Bạn phải luôn xác thực dữ liệu của mình ở phía máy chủ, sau biểu mẫu đã được gửi. Xác thực phía máy khách và xác thực AJAX trước khi gửi biểu mẫu chỉ nâng cao trải nghiệm người dùng, bằng cách cung cấp phản hồi nhanh hơn về dữ liệu không hợp lệ. Cả hai xác nhận phía máy khách và xác thực trước khi gửi AJAX đều không và không thể bảo vệ bạn khỏi việc đệ trình biểu mẫu độc hại. Những kẻ tấn công và kẻ lạm dụng thường không sử dụng trình duyệt để gửi dữ liệu đến máy chủ của bạn.

+0

Câu trả lời của bạn rất hữu ích! Cảm ơn bạn... –

5

Quy tắc của tôi là khá đơn giản ...

  1. Nếu bạn quan tâm đến dữ liệu của bạn, sau đó bạn phải xác nhận trên máy chủ.
  2. Nếu bạn quan tâm đến trải nghiệm người dùng của mình, thì bạn phải xác thực trên khách hàng.
+0

Câu trả lời hay nhất !, ngắn gọn và chính xác. –

6

Vì javascript có thể đọc được cho bất kỳ khách truy cập nào và dễ dàng chỉnh sửa với các trình duyệt mới nhất, bất kỳ ai có kỹ năng lập trình bit đều có thể bỏ qua xác thực javascript của bạn một cách nhanh chóng. Vì vậy, bạn cũng nên xác thực ở phía máy chủ.