[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод с базы
d13anger
Я вывожу текст с html тэгами следующей функцией:
<?php echo htmlspecialchars($myrow['text']); ?> 

И текст выводится правильно и весь, но только тэги тоже выводятся как текст!
Вопрос: как вывести из базы чтобы тэги работали по своему назначению и не могло быть XSS межсайтовый скриптинг(читал статью что без htmlspecialchars можно базу запороть).



Спустя 3 минуты, 12 секунд (28.01.2011 - 13:28) sharki написал(а):
d13anger
htmlspecialchars применяется ТОЛЬКО для вывода контента клиенту, что можно запороть это только верстку страницы, как раз таки этими тегами (если там плохие теги), "XSS межсайтовый скриптинг"- это наверное если в тексте JS код который будет запускаться на сайте, и открывать окна и т.п...эт тебе надо делать проверку регулярными выражениями при добавлении в БД и всё..ну и конечно защищать базу всякими защитными функциями...

Спустя 6 минут, 9 секунд (28.01.2011 - 13:35) d13anger написал(а):
Так значит это бред? Это из статьи.
А дальше просто страшно. Такие дыры совсем непростительны:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<
html>
<
head>
<
meta name="description" content="<?php echo $myrow['meta_d']; ?> ">
<
meta name="keywords" content="<?php echo $myrow['meta_k']; ?> ">
<
meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<
title><?php echo $myrow['title']; ?></title>
<
link href="style.css" rel="stylesheet" type="text/css">
</
head>
<
body>



На первый взгляд ничего особенного, однако попробуйте через PhpMyAdmin выполнить такой запрос
UPDATE `settings` SET `meta_d` = '"><script>location.href="http://sex.ru";</script>' WHERE `id` = 1


и зайти на главную страницу сайта. Обещаю незабываемые впечатления )).

Как это может попасть в базу, я не покажу по известным причинам. Но поверьте, это не так уж сложно на таком сайте. Называется сие - XSS или межсайтовый скриптинг.

Так вот, чтобы такого никогда не было, нужно всегда обрабатывать данные перед выводом в поток функцией htmlspecialchars()

Спустя 10 минут, 50 секунд (28.01.2011 - 13:45) Snus написал(а):
d13anger
Ты когда в БД пишешь выполняй htmlspecialchars. Ага?

Спустя 1 минута, 34 секунды (28.01.2011 - 13:47) d13anger написал(а):
Snus
подробней можно, а то я зеленый...

Спустя 6 минут, 52 секунды (28.01.2011 - 13:54) Snus написал(а):
d13anger
А еще лучше вообще выреж теги < и >



<?php
$text = '><script>location.href="http://sex.ru";</script>';
$string = mysql_real_escape_string(str_replace(array('<','>'), array('',''), $text));
?>


UPDATE `settings` SET `meta_d` = '$string' WHERE `id` = 1


Спустя 3 минуты, 53 секунды (28.01.2011 - 13:58) d13anger написал(а):
Snus
Не я этого делать не буду)

Спустя 27 секунд (28.01.2011 - 13:58) sharki написал(а):

Спустя 7 минут, 51 секунда (28.01.2011 - 14:06) Snus написал(а):
d13anger
А зачем спрашиваешь тогда? smile.gif


_____________
Не говори мне что делать а я тогда не скажу куда тебе идти!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.