Nonces có thể được tái sử dụng nhiều lần? Vấn đề lỗi / bảo mật?


7

Tôi đã đọc rằng các nonces chỉ dành cho một lần sử dụng và sau khi yêu cầu ajax, bạn nên đưa ra một nonce mới để với yêu cầu ajax tiếp theo, một nonce mới sẽ được gửi đến máy chủ.

Tuy nhiên, tôi vừa kiểm tra các yêu cầu ajax lặp đi lặp lại bằng cách sử dụng cùng một mã thông báo nonce và với mỗi yêu cầu được wp_verify_noncetrả về đúng trên cùng một mã thông báo, có nghĩa là nó có thể được sử dụng lại hàng chục lần.

Đây là cố ý, hay một lỗi?

Tôi vẫn cần phải phát hành nonces mới với mỗi yêu cầu ajax, hoặc cùng một yêu cầu có thể tiếp tục hoạt động cho tất cả các yêu cầu trong tương lai không?

Câu trả lời:


11

Trong WordPress, nonces dành riêng cho người dùng, hành động được thực hiện và thời gian. Liên quan đến thời gian, một nonce có giá trị trong 24 giờ và thay đổi cứ sau 12 giờ. Đây được coi là một sự đánh đổi chấp nhận được, vì sử dụng một số thực - được sử dụng một lần sẽ liên quan đến việc thêm một hệ thống theo dõi và lưu trữ các tập đoàn đã sử dụng.

Nonces cũng được băm và do đó, hằng số NONCE_SALT cũng sẽ là một phần của kết quả nonce. Thay đổi NONCE_SALT sẽ làm mất hiệu lực tất cả các nonces ngay lập tức.

Bạn nên phát hành một nonce mới mỗi lần. Điều này là để nếu thời gian hoặc phương pháp cần được điều chỉnh trong tương lai, thì mã của bạn sẽ tiếp tục xử lý nó một cách thích hợp.


5
Vì tò mò, có cách nào để vô hiệu hóa một nonce đã từng được sử dụng?
phatskat

1
Trong trường hợp bất cứ ai khác thấy điều này tự hỏi điều tương tự, các tổ chức Wordpress không được lưu trữ, vì vậy chúng không thể bị xâm phạm nếu không thêm hành vi tùy chỉnh.
ars265
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.