Ой. Не пугайте и не путайте людей. Или читайте внимательно. Вот это место я зачем написал?
Цитата |
Бороться с этим видом атаки очень просто. Нужно данные, перед выводом в поток (в браузер) обработать функцией htmlspecialchars(). |
Это основа, а не фильтры всякие, вымученные непониманием процесса и параноей.
Эту детальку Вы как раз и пропустили:
<?php
$text = '[url]http://link">Это наша ссылка</a><br /><script>alert("Бай-бай XSS");</script>[/url]';
$text = htmlspecialchars($text);
$text = preg_replace('#\[url\]http://(.+?)\[/url]#',"<a href=\"http://$1\" >$1</a>",$text);
echo $text;
?>
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
twin скажи пожалуйста, вот стринг я передаю в запросе как ты научил,
' ".mysql_real_escape_string($string)." '
а вот я хочу число записать, как правильно
"INSERT INTO `dd` (`str`,`chislo`) VALUES(' ".mysql_real_escape_string($str)." ','вот тут я хочу написать число 3 допустим, и сразу 3 и через переменную, как правильно ')"
1.
int $chslo=3; //тут можно и не обьявлять тип переменной, т.к.без кавычек автоматом число пхп определит или как???
VALUES(' ".mysql_real_escape_string($str)." ',' ".$chislo." ')" //тут не правильно???
2.
VALUES(' ".mysql_real_escape_string($str)." ',' 3 ')" //как правильно???
а вот нашел ты писал, сорри
$res = mysql_query("UPDATE `table`
SET `login`='". mysql_real_escape_string($login) ."'
WHERE `id`=". (int)$id );
Целочисленные данные лучше приводить в соответствие функцией intval() или языковой конструкцией (int), что в принципе одно и тоже. И не обрамлять апострофами.
а если сразу число как я написал во втором случае, правильный синтаксис напиши пожалуйста.
VALUES(' ".mysql_real_escape_string($str)." ',' ?3? ')" //как правильно???
_____________
Достучаться до небес.
Цитата |
а если сразу число как я написал во втором случае, правильный синтаксис напиши пожалуйста. VALUES(' ".mysql_real_escape_string($str)." ',' ?3? ')" //как правильно??? |
Так:
"... VALUES(' ".mysql_real_escape_string($str)." ', 3 )"
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Nikitian
19.04.2010 - 12:29
Про
куки надо бы добавить: чтобы осложнить жизнь нехорошим людям крайне рекомендуется использовать параметр $httponly для
setcookie. Это сделает невозможным увод кук через xss-атаки.
Это же свойство кук нужно использовать и для хранения идентификаторов сессии.
Пароль в открытом виде вообще хранить нельзя. Тогда и с сессиями можно более вольно обращаться и хранить в них всю инфу, не боясь соседей по нерадивому хостингу.
NewBePhp
19.04.2010 - 20:30
twin
отдельное спасибо за сессии
Yatsuba
19.06.2010 - 18:21
twinнасчет
sql иньекций.. безопасен ли такой способ?
function filter($data) {
$data = trim(htmlspecialchars(strip_tags($data)));
if (get_magic_quotes_gpc())
$data = stripslashes($data);
$data = mysql_real_escape_string($data);
return $data;
}
foreach($_POST as $key => $value) {
$data[$key] = filter($value);
}
$ins = mysql_query("
INSERT into `comments`(`author`,`email`,`text`)
VALUES ('$data[author]','$data[email]','$data[text]')
") or die (mysql_error());
Yatsuba
23.06.2010 - 18:25
народ ну гляньте кто нить!
Basili4
23.06.2010 - 18:43
$data = trim(htmlspecialchars(strip_tags($data))); - супер безопасно и излишне в общем прочитай манула про ф-и htmlspecialchars и strip_tags все поймешь
_____________
Цитата |
От постоянного сидения рядом с клавиатурой начинает болеть спина.
|
Делаю сайты, пишу скрипты php, js.
YatsubaА какой смысл глядеть мне, если ты не удосужился прочитать, что я написал
тут?
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Yatsuba
23.06.2010 - 22:54
Basili4
я так понял вы имеете в виду что лучше использовать что то одно:
либо заменять теги эквивалентом
либо их вырезать
но что тогда лучше?
twin
почитал. вроде через mysql_real_escape_string пропустил до запроса..
выходит забыл поместить переменную $data в кавычки? или что то другое? простите, возможно я недопонял...
С кавычками как раз все нормально. А вот это что?
$data = trim(htmlspecialchars(strip_tags($data)));
И зачем ты весь POST через my
sql_real_escape_string() прогнал?
Если действительно хочешь разобраться, тебе
сюда.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Yatsuba
23.06.2010 - 23:55
Цитата |
Если действительно хочешь разобраться, тебе сюда. |
Спасибо. Занятно. Будем разбираться.
zvezda_t
26.06.2010 - 14:07
Как быть если у меня не MySQL, а Microsoft SQL Server?
насколько я поняла mssql_real_escape_string()-не существует(
чем можно заменить функцию mysql_real_escape_string() ?
_____________
Что ты сделал сегодня - для завтра?
"Приидите ко Мне вси труждающиеся и обремененнии и Аз упокою вы, возмите иго Мое на себе и научитеся от Мене яко кроток есмь и смирен сердцем и обрящете покой душам вашим, иго бо Мое благо и бремя Мое легко есть."(Мф. 11:28-30)
К сожалению альтернативы нет. Используйте addslashes().
Можно конечно ещё поизвращаться с различными вариантами типа кодирования данных в HEX, и помещения в запрос не чистого текста а 0xHEX-DATA
zvezda_t
2.07.2010 - 13:10
Цитата |
1. Включена директива register_globals. |
это значит нельзя так переменные объявлять:
global $val;
$val=1;
function fun1()
{
global $val;
print $val;
.....
}
нельзя так?
_____________
Что ты сделал сегодня - для завтра?"Приидите ко Мне вси труждающиеся и обремененнии и Аз упокою вы, возмите иго Мое на себе и научитеся от Мене яко кроток есмь и смирен сердцем и обрящете покой душам вашим, иго бо Мое благо и бремя Мое легко есть."(Мф. 11:28-30)
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.