Чекбокс / радио / выбор входа уязвимы в XSS?

Если я отправлю флажок ввода или радио или выберите, которые имеют фиксированный контент, может ли он быть уязвимым от XSS? Если да, то как? Как предотвратить?

1

Решение

XSS может произойти, когда некоторые элементы вашей страницы генерируются с использованием введенной пользователем информации.

Посмотрите на следующий фрагмент:

<input type="checkbox" value="<?php echo $variableContainingUserInput; ?>" />

Если ваш пользователь ввел следующую строку:

" /> <script> window.location = "maliciouswebsite.com"; </script>

Результирующий HTML будет выглядеть так:

<input type="checkbox" value="" /> <script> window.location = "maliciouswebsite.com"; </script>" />

Это фактически перенаправит пользователя на указанный вредоносный веб-сайт.

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

Вот Похожий вопрос на SO.

0

Другие решения

Фиксированный контент или нет, это не имеет значения. «Злоумышленник» может изменить это, если захочет. Но … даже если это не изменилось: все уязвимо для XSS, если это зависит от данных, отправленных клиентом.

Как это предотвратить?
избежать всего!

Как это сделать … это зависит … вы можете сделать это на стороне сервера (PHP и т. Д.) Или на стороне клиента (javascript). Но не полагайтесь на JavaScript. Злоумышленник может заставить данные не быть разнесены или проанализированы javascript.

Так что …. сбежать на стороне сервера

PHP:

$safeData = htmlentities($vulnerableData);
1

Если пользователь может видеть его, он может изменить его. Всегда проверяйте каждый вход.

0

В предотвращении XSS есть много вещей, на которые нужно обратить внимание. Это должно охватывать большинство вещей на стороне сценариев плюс, если у вас есть конфиденциальная информация, вы должны действительно использовать Сертификат SSL из надежного источника, такого как Verisign или тех, кто застрахован. Вы можете получить 128 или 256-битные сертификаты, в зависимости от того, что вы храните. Это всего лишь сценарии, вы также должны убедиться, что вы используете правильные функции БД для безопасного хранения данных.

Кроме того, проверьте это, когда у вас есть шанс охватить большую часть того, что вы спрашиваете:
https://www.owasp.org/index.php/PHP_Security_Cheat_Sheet

если вам нужны советы о том, как обеспечить безопасность полей ввода, выполните это в верхней части Сертификат SSL:

Предотвращение межсайтовых скриптовых атак

@ref: http://www.sitepoint.com/php-security-cross-site-scripting-attacks-xss/

Вы также можете использовать токены формы

<?php

$token = md5(time());

$fp = fopen('./tokens.txt', 'a');
fwrite($fp, "$token\n");
fclose($fp);

?>

<form method="POST">
<input type="hidden" name="token" value="<?php echo $token; ?>" />
<input type="text" name="message"><br />

http://phpsec.org/projects/guide/2.html

после того, как вы сделали все, что есть сторона хранения базы данных. не используйте функции mysql_ *, но используйте PDO или подготовленные операторы.

0
По вопросам рекламы [email protected]