web.py: Как выборочно скрыть ресурсы с 404 с для какого-либо метода HTTP?

Я хочу выборочно скрыть некоторые ресурсы на основе некоторой формы аутентификации в web.py, но их существование показано 405 ответами на любой метод HTTP, который я не реализовал.

Вот пример:

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()

Когда запрос неопределенного метода выпущен, ресурс показан:

$ 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
...

Я мог реализовать ту же проверку на другие общепринятые методики в Спецификации HTTP, но творческий злодей мог бы изобрести их собственное:

$ 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
...

Существует ли способ реализовать выгоду весь метод в web.py классе для какого-либо метода HTTP, таким образом, я могу удостовериться, что проверка защиты будет выполнена?

Или есть ли альтернативный способ скрыть эти ресурсы?

5
задан Ian Mackinnon 1 August 2010 в 14:45
поделиться