Вопрос PHP XSS - Является ли параметр GET, который ничего не выводит на странице в опасности? - PullRequest
0 голосов
/ 27 января 2011

Хорошо, я просто хотел знать, обязательно ли это XSS-уязвимость, поскольку она не выводит результаты как таковые?

Например:

if($_GET['doRedirect'] == "yes") {
//redirect Page
} else {
//dont redirect page
}

тогда

http://example.com? DoRedirect = да

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

Большое спасибо:)

Ответы [ 2 ]

3 голосов
/ 27 января 2011

Это должно быть безопасно.

Межсайтовый скриптинг может происходить только в том случае, если вы действительно выводите на свою страницу что-то, сгенерированное пользователем.

Примером этого может быть то, что вы взяли имя пользователя в качестве параметра get name и сделали следующее:

<?php
echo "Hello, {$_GET['name']}. How are you today?";
?>

В этом случае, если кто-то установит name -параметр на <script>alert('Hello, There!');</script>, у него неожиданно будет работать JavaScript на URL, размещенном на вашем домене.

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

Если вы не уверены или хотите узнать больше о межсайтовом скриптинге, взгляните на следующие вопросы:

2 голосов
/ 27 января 2011

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

Если вы сделаете что-то подобное, то да, это будет уязвимо:

if($_GET['doRedirect'] == "yes")
{
  //redirect Page
}
else
{
  //dont redirect page

  // Create message to display in the browser
  $messageToUser = 'You selected '.$_GET['doRedirect'].' for your redirection';
}

В этом случае вы должны выполнить проверку ввода.

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