Должен ли я разрешать параметры запроса и отдельные данные, если они не нужны?

У меня есть некоторые мысли о том, как спроектировать мой сервер в узле js. У меня были мысли разрешить или запретить клиенту отправлять данные на сервер по параметрам запроса my.site.com?data=some data by the client или через тело при использовании метода POST {data:'some data by the client'}. Я спрашивал:

1) Есть ли правильный способ спроектировать мой сервер с некоторыми ограничениями? Я думаю о том, что данные поступают на сервер без необходимости, так почему принятие этого является хорошей практикой?

2) Если я не должен разрешать клиенту отправлять данные запроса или тела, когда они не нужны, какой статус HTTP я должен вернуть (404 или 400)?

ПРИМЕР

У меня есть путь URI для метода GET, и я ожидаю, что путь будет таким

http://my.site.com/something

или вот так

http://my.site.com/something?search=I search for anything

когда пользователь отправляет мне этот GET URL:

http://my.site.com/something?here=not something that is useful to the server

Должен ли я отправить статус HTTP 400 для BAD REQUEST или 404 для NOT FOUND или ответить 200 OK? И если все в порядке, почему я должен разрешать другие запросы, если сервер их не использует?

Тот же вопрос относится к методу POST, если мне нужно, например

{uname:'username',pwd:'password'} почему я должен разрешить пользователю отправлять мне например

{uname:'username',pwd:'password',some:'other data here'}??


person prieston    schedule 16.07.2017    source источник


Ответы (1)


Если пользователь отправляет дополнительные параметры URL, вы должны просто игнорировать это. Это то, что делает большинство серверов. Например, поиск Google по запросу https://www.google.com/#q=ant&coolness=true возвращает то же самое, что и https://www.google.com/#q=ant, потому что coolness не является ключевым словом параметра URL, используемым Google.

То же самое касается дополнительных параметров POST, хотя, если у вас есть форма или веб-сайт, вам, вероятно, следует убедиться, что пользователь отправляет только те данные, которые необходимы.

person frozen    schedule 16.07.2017