[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Обсуждение темы безопасности
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9
twin
Ой. Не пугайте и не путайте людей. Или читайте внимательно. Вот это место я зачем написал?
Цитата
Бороться с этим видом атаки очень просто. Нужно данные, перед выводом в поток (в браузер) обработать функцией 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;
?>


_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
yok
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? ')" //как правильно???

_____________
Достучаться до небес.
twin
Цитата
а если сразу число как я написал во втором случае, правильный синтаксис напиши пожалуйста.
VALUES(' ".mysql_real_escape_string($str)." ',' ?3? ')" //как правильно???

Так:
"... VALUES(' ".mysql_real_escape_string($str)." ', 3 )"


_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Nikitian
Про куки надо бы добавить: чтобы осложнить жизнь нехорошим людям крайне рекомендуется использовать параметр $httponly для setcookie. Это сделает невозможным увод кук через xss-атаки.
Это же свойство кук нужно использовать и для хранения идентификаторов сессии.

Пароль в открытом виде вообще хранить нельзя. Тогда и с сессиями можно более вольно обращаться и хранить в них всю инфу, не боясь соседей по нерадивому хостингу.
NewBePhp
twin
отдельное спасибо за сессии
Yatsuba
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
народ ну гляньте кто нить! sad.gif
Basili4
$data = trim(htmlspecialchars(strip_tags($data))); - супер безопасно и излишне в общем прочитай манула про ф-и htmlspecialchars и strip_tags все поймешь

_____________
Цитата
От постоянного сидения рядом с клавиатурой начинает болеть спина.


Делаю сайты, пишу скрипты php, js.
twin
Yatsuba
А какой смысл глядеть мне, если ты не удосужился прочитать, что я написал тут?


_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Yatsuba
Basili4
я так понял вы имеете в виду что лучше использовать что то одно:
либо заменять теги эквивалентом
либо их вырезать
но что тогда лучше?

twin
почитал. вроде через mysql_real_escape_string пропустил до запроса..
выходит забыл поместить переменную $data в кавычки? или что то другое? простите, возможно я недопонял...
twin
С кавычками как раз все нормально. А вот это что?
$data = trim(htmlspecialchars(strip_tags($data)));

И зачем ты весь POST через mysql_real_escape_string() прогнал?

Если действительно хочешь разобраться, тебе сюда.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Yatsuba
Цитата
Если действительно хочешь разобраться, тебе сюда.

Спасибо. Занятно. Будем разбираться.
zvezda_t
Как быть если у меня не MySQL, а Microsoft SQL Server?

насколько я поняла mssql_real_escape_string()-не существует(
чем можно заменить функцию mysql_real_escape_string() ?

_____________

Что ты сделал сегодня - для завтра?
"Приидите ко Мне вси труждающиеся и обремененнии и Аз упокою вы, возмите иго Мое на себе и научитеся от Мене яко кроток есмь и смирен сердцем и обрящете покой душам вашим, иго бо Мое благо и бремя Мое легко есть."(Мф. 11:28-30)
Kuzya
К сожалению альтернативы нет. Используйте addslashes().
Можно конечно ещё поизвращаться с различными вариантами типа кодирования данных в HEX, и помещения в запрос не чистого текста а 0xHEX-DATA smile.gif
zvezda_t
Цитата
1. Включена директива register_globals.


это значит нельзя так переменные объявлять:
global $val;
$val=1;

function fun1()
{
global $val;
print $val;
.....

}


нельзя так?

_____________

Что ты сделал сегодня - для завтра?
"Приидите ко Мне вси труждающиеся и обремененнии и Аз упокою вы, возмите иго Мое на себе и научитеся от Мене яко кроток есмь и смирен сердцем и обрящете покой душам вашим, иго бо Мое благо и бремя Мое легко есть."(Мф. 11:28-30)
Быстрый ответ:

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