Использование `<textarea>` для защиты от скриптов - PullRequest
2 голосов
/ 14 июля 2009

Хм. Вместо того, чтобы «очищать» ввод или использовать какое-либо регулярное выражение для удаления тегов, насколько безопасно помещать пользовательские данные в <textarea>?

Например, скажем, есть страница PHP, которая делает следующее:

echo '<textarea>';
echo $_GET['whuh_you_say'] ;
echo '</textarea>';

Обычно это уязвимо для атак xss, но в textarea все теги сценариев будут отображаться как <script> и не будут выполняться.

Это небезопасно?

Ответы [ 5 ]

16 голосов
/ 14 июля 2009
</textarea>
  <script type="text/javascript">
    alert("this safe...");
    /* load malicious c0dez! */
  </script>
<textarea>
1 голос
/ 14 июля 2009

Если ваши пользователи не должны использовать какие-либо теги HTML (что, если вы предлагаете это решение textarea, это так), просто запустите его через htmlspecialchars() или htmlentities() и покончите с этим. Гарантированная безопасность.

1 голос
/ 14 июля 2009

strip_tags(string);

Замечательно! Честное слово!

0 голосов
/ 12 января 2010

Это говорит о дыре XSS, обнаруженной в textarea в документах Google (я думаю, что пост несколько устарел - так что Google, вероятно, уже защитил его), но он демонстрирует, как textareas можно использовать как вектор атаки.

ha.ckers.org, обсуждающий эксплойт Google Документы textarea

0 голосов
/ 14 июля 2009

Достаточно хорошо для основ:

sanitized = str_replace("<", "&lt;", $_GET['whuh_you_say']);
sanitized = str_replace(">", "&gt;", sanitized);
...