<?php echo htmlspecialchars($myrow['text']); ?>
И текст выводится правильно и весь, но только тэги тоже выводятся как текст!
Вопрос: как вывести из базы чтобы тэги работали по своему назначению и не могло быть XSS межсайтовый скриптинг(читал статью что без htmlspecialchars можно базу запороть).
Спустя 3 минуты, 12 секунд (28.01.2011 - 13:28) sharki написал(а):
d13anger
htmlspecialchars применяется ТОЛЬКО для вывода контента клиенту, что можно запороть это только верстку страницы, как раз таки этими тегами (если там плохие теги), "XSS межсайтовый скриптинг"- это наверное если в тексте JS код который будет запускаться на сайте, и открывать окна и т.п...эт тебе надо делать проверку регулярными выражениями при добавлении в БД и всё..ну и конечно защищать базу всякими защитными функциями...
htmlspecialchars применяется ТОЛЬКО для вывода контента клиенту, что можно запороть это только верстку страницы, как раз таки этими тегами (если там плохие теги), "XSS межсайтовый скриптинг"- это наверное если в тексте JS код который будет запускаться на сайте, и открывать окна и т.п...эт тебе надо делать проверку регулярными выражениями при добавлении в БД и всё..ну и конечно защищать базу всякими защитными функциями...
Спустя 6 минут, 9 секунд (28.01.2011 - 13:35) d13anger написал(а):
Так значит это бред? Это из статьи.
А дальше просто страшно. Такие дыры совсем непростительны:
На первый взгляд ничего особенного, однако попробуйте через PhpMyAdmin выполнить такой запрос
и зайти на главную страницу сайта. Обещаю незабываемые впечатления )).
Как это может попасть в базу, я не покажу по известным причинам. Но поверьте, это не так уж сложно на таком сайте. Называется сие - XSS или межсайтовый скриптинг.
Так вот, чтобы такого никогда не было, нужно всегда обрабатывать данные перед выводом в поток функцией htmlspecialchars()
А дальше просто страшно. Такие дыры совсем непростительны:
<!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. Ага?
Ты когда в БД пишешь выполняй 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 написал(а):
http://phpforum.ru/index.php?showtopic=212...%ED%EE%F1%F2%FC
Читай про защиту
Читай про защиту
Спустя 7 минут, 51 секунда (28.01.2011 - 14:06) Snus написал(а):
d13anger
А зачем спрашиваешь тогда?
А зачем спрашиваешь тогда?
_____________
Не говори мне что делать а я тогда не скажу куда тебе идти!