2013-05-13 4 views
-5

Доброе утро. Я сегодня сдаю экзамен по веб-разработке. Довольно уверен в большей части экзамена, однако, просматривая прошлую статью, я столкнулся с этим вопросом:PHP GET или POST security

b) Разработчик решает использовать HTTP GET для отправки пользовательского сообщения для системы бордюров. Объясните потенциальные угрозы безопасности и обсудите, как их преодолеть. Обратите внимание, вы должны рассмотреть две ситуации:

  1. HTTP GET должен быть использован.
  2. HTTP GET можно изменить. (15 баллов)

Я знаю о POST и GET, но я не уверен, что смог бы обсудить его достаточно подробно, чтобы достичь 15 знаков.

Это попытка меня ответить на вопрос, если предложения могут быть сделаны в попытке направить меня в правильном направлении, что было бы весьма признателен:

GET несколько небезопасно, если сообщение было личным сообщением, данные, вероятно, будут чувствительными, и поэтому GET не следует использовать, если не включена дополнительная безопасность. GET отобразит сообщение пользователя в URL-адресе, позволяя кому-либо просматривать это, просматривая ваше плечо и т. Д. Отправка по своей природе немного более безопасна, она не отображает сообщение в URL-адресе и вместо этого добавляет его в заголовок HTTP, однако это безопасно только в том случае, если протокол HTTP защищен и шифрование должно учитываться для всех конфиденциальных данных.

Если бы кто-нибудь мог предложить, что можно было бы написать в ответ на этот вопрос, было бы очень признательно!

Благодаря

+7

позволяет увидеть вашу попытку ... В конце концов, какие экзамены предназначены для ... –

+4

@Sean_myers было бы неплохо прочитать ваш ответ, а затем прокомментировать его. –

+0

Прочитайте мой ответ, он объясняет, о чем вы просили, и помните, что между безопасностью POST/GET нет большой разницы. Скорее всего, вы хотите, чтобы вы отправляли (POST) или извлекали (GET) данные. – Robert

ответ

2

Когда вы говорите о безопасности, существует несколько уровней. Использование GET или POST скорее всего не будет живым или мертвым типом выбора, но его определенно полезно провести различие между ними.

Как следует из названия, GET является средством для получения информации, а POST используется для отправки информации. Если вы помните об этом, трудно понять, какой метод использовать.

В вашем случае пользователь представляет сообщение на доске объявлений. Так что правильный ответ будет POST. Причина, по которой POST более безопасна для этого, заключается в том, что она всегда требует определенного действия от пользователя или javascript. Я не могу просто отправить вам ссылку по электронной почте и напрямую отправить вам новое сообщение. Если бы я использовал GET, я мог бы отправить вам ссылку вроде http://www.example.com/postmessage.php?message=post%20me, и если вы щелкнете по ней, вы разместите ее.

Теперь, если ваша доска объявлений закреплена с паролем имени пользователя, и вы вошли в систему, я отправил на ваш запрос запрос GET, и никто не узнает, что это действительно не так. Это потенциальный риск для безопасности.

Теперь, если я пришлю вам письмо со ссылкой, вам все равно нужно щелкнуть по нему. Но подумайте, что мне будет разрешено размещать изображения на том же форуме сообщений.Я мог бы отправить изображение как я, как <img src='/postmessage.php?message=post%20me' width='0' height='0'/>, и каждый пользователь, который посещает мой пост, также разместил бы это сообщение, так как ваш браузер пытается сделать GET изображение, и я снова отправил от вашего имени.

Теперь, если бы я мог разместить javascript, я, очевидно, мог бы также сделать запрос POST. Но публикация javascript намного реже.

Другим побочным эффектом запроса GET является то, что поисковые роботы также распространяли бы это и могли бы создавать сообщения также.

И последнее: запрос на получение запроса ограничен. Если вы хотите опубликовать большое сообщение, вам понадобится сообщение. См. What is the maximum possible length of a query string? для получения подробной информации о длине строки запроса. Вы достигнете максимума быстро с GET.

Теперь все эти проблемы безопасности не могут быть решены только с использованием POST вместо GET и потребуются дополнительные усилия по серверному коду. Но первым шагом является использование надлежащего метода.

+0

Спасибо, мне кажется, что меня не научили никому из этого. Думаю, мне может понадобиться немного прочитать сейчас ... –

+0

Пожалуйста, объясните, что случилось с ответом downvoter. Я бы хотел улучшить себя. –

+1

@HugoDelsing +1 для приятного ответа и надеется, что он компенсирует downvoter –