Tôi muốn ẩn có chọn lọc một số tài nguyên dựa trên một số hình thức xác thực trong web.py, nhưng sự tồn tại của chúng được tiết lộ bởi 405 câu trả lời cho bất kỳ phương thức HTTP nào mà tôi chưa triển khai.web.py: Cách chọn lọc ẩn tài nguyên với 404 cho bất kỳ phương thức HTTP nào?
Dưới đây là một ví dụ:
import web
urls = (
'/secret', 'secret',
)
app = web.application(urls, globals())
class secret():
def GET(self):
if web.cookies().get('password') == 'secretpassword':
return "Dastardly secret plans..."
raise web.notfound()
if __name__ == "__main__":
app.run()
Khi một yêu cầu phương pháp xác định được ban hành, các tài nguyên được tiết lộ:
$ curl -v -X DELETE http://localhost:8080/secret
...
> DELETE /secret HTTP/1.1
...
< HTTP/1.1 405 Method Not Allowed
< Content-Type: text/html
< Allow: GET
...
tôi có thể thực hiện việc kiểm tra tương tự cho các phương pháp phổ biến khác trong đặc tả HTTP , nhưng một miscreant sáng tạo có thể phát minh ra của riêng mình:
$ curl -v -X SHENANIGANS http://localhost:8080/secret
...
> SHENANIGANS /secret HTTP/1.1
...
< HTTP/1.1 405 Method Not Allowed
< Content-Type: text/html
< Allow: GET
...
Is có một cách để thực hiện một phương pháp bắt tất cả trong một lớp web.py cho bất kỳ phương thức HTTP nào, vì vậy tôi có thể đảm bảo kiểm tra bảo mật sẽ được chạy?
Hoặc có cách nào khác để ẩn các tài nguyên này không?
Kẻ tấn công có thể phát minh ra bất cứ điều gì phương pháp tên họ thích. Nếu tôi bắt đầu xác định các phương pháp cho mọi khả năng tôi sẽ bỏ lỡ hạn chót của mình :) –