Безопасно ли размещать данные в href? - PullRequest
0 голосов
/ 30 августа 2011

Я хочу передать данные с одной php-страницы на другую по клику и использовать эти данные при заполнении связанной страницы. Сначала я собирался использовать ajax для этого, но столкнулся с проблемой, а затем понял, что это так же просто, как поместить данные в href ссылки.

Мой вопрос: безопасно ли размещать данные непосредственно в href таким образом? Я знаю, что передача данных через URL (что в итоге и делает) безопасна, но я где-то слышал (что я не могу вспомнить), что размещение данных непосредственно в href ссылки может вызвать проблемы с Интернетом. ползунки и тому подобное.

Это правда? Есть ли что-то еще, о чем я должен беспокоиться при использовании этого метода? Или для меня это лучший способ отправить данные, уникальные для каждой ссылки, на другую страницу по клику?

PHP:

while($row = mysql_fetch_assoc($result_pag_data)) { 
    echo "<a target='_blank' href='secondary_imgs.php?imgId=".$row['imgId']."'></a>";
}

Ответы [ 5 ]

1 голос
/ 30 августа 2011

С веб-сканерами не должно быть проблем, поскольку они просто переходят по ссылкам.

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

Если вам нужно ограничить ваши данные определенными пользователями, тогда это не очень хорошая идея, в противном случае, просто и понятно, если это работает для вас, тогда сделайте это.

1 голос
/ 30 августа 2011

Похоже, что это безопасно, поскольку вы «только» запрашиваете изображение с определенным идентификатором (это все, что вы делаете, верно?).Просто спросите себя:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

9.1.1 Безопасные методы

Разработчики должны знать, что программное обеспечение представляет пользователя в их взаимодействиях через Интернет, и должны быть осторожны, чтобыпользователь должен знать о любых действиях, которые он может предпринять, которые могут иметь неожиданное значение для них самих или для других.

В частности, установлено, что методы GET и HEAD НЕ ДОЛЖНЫ иметь значение принятиядействие, кроме поиска.Эти методы следует считать «безопасными».

применяется.

1 голос
/ 30 августа 2011

Ни передача данных через URL, ни встраивание их в href не является безопасным.

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

Итак, если вы разрабатываете систему, которая будет работать под строгой защитой в дружественной среде - можно передавать параметры через URL (однако, обратите внимание, что строка URL ограничена 4096 символами). Если нет - это зависит от уровня защиты, который вы хотите.

Самый простой способ - использовать POST запросы вместо GET. Таким образом, вы не будете защищать свои данные от злоумышленников, но обычные пользователи не будут иметь возможности ни просматривать, ни изменять их. В любом случае, рекомендуется всегда проверять ввод на сервере.

1 голос
/ 30 августа 2011

Я думаю, это достаточно безопасно, если вы хотите отобразить некоторые данные, но никогда не используйте метод get для вставки данных, особенно осторожно, когда дело доходит до sql.НИКОГДА не используйте метод get для изменения sql, если нужно, сначала проверьте аргументы.

Будьте осторожны и с почтовым методом.Одним словом, никогда не доверяй пользователям, никогда не знаешь.

0 голосов
/ 30 августа 2011

Определить «безопасно».

Не зная ни о модели угрозы, ни о том, как используются данные, невозможно ответить.

Конечно, существуют очень важные различия между GET и POST (но учтите, что POSTed for может отправлять переменные GET через URL-адрес действия).

Не менее опасно использовать POST, а не GET для отправки данных. Ни с использованием куки. Все может быть изменено на стороне клиента.

Если вы говорите о CSRF, то есть много способов предотвратить это - попробуйте Google для начала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...