2016-09-19 3 views
2

Я разрабатываю api с методом, который должен быть idempotent и не должен изменять любые данные на сервере. Это должен быть метод, который обрабатывает запрос и возвращает ответ для заданных параметров.REST API GET с конфиденциальными данными

Одним из параметров является конфиденциальная информация. Это не вариант использования дополнительного шифрования. Данные уже зашифрованы, но требования к безопасности очень требовательны, и даже зашифрованные данные следует обрабатывать очень осторожно.

Согласно спецификации REST, метод идемпотентного запроса должен быть реализован как метод GET HTTP. Проблема в этом случае - это конфиденциальные данные, которые не должны передаваться в качестве параметра GET в URL. Только опция в стандарте HTTP - передавать конфиденциальные данные в основной части HTTP-запроса.

Мой вопрос в том, что лучше? Разбить дизайн api для отдыха и отправить запрос запроса в виде POST или передать зашифрованные данные по URL-адресу? Может быть, лучшего решения я не вижу?

+0

Там, где Googling 'REST API GET с конфиденциальными данными ', я проверил бы это первым. См. http://security.stackexchange.com/questions/29598/should-sensitive-data-ever-be-passed-in-the-query-string для аргументов против ввода его в строку запроса - большая из них - это URL-адреса и Строки запроса обычно регистрируются на веб-сервере –

ответ

3

Согласно спецификации REST, метод idempotent query должен быть реализован как метод GET HTTP.

Насколько я могу судить по моему ограниченному английскому, СЛЕДУЕТ! = ДОЛЖЕН. Вы не будете нарушать дизайн REST API, отправив POST в этом случае. Вы можете отправить свои конфиденциальные данные в HTTP-заголовок, если это возможно. И ок. вы должны использовать HTTPS, если вы хотите отправлять конфиденциальные данные в любом месте.

Смежные вопросы