|
|
|
| Здравствуйте. Хотелось бы услышать ваши варианты о том, как наверняка обезопасить себя от подобного рода неприятностей (XSS и SQL).
Насчёт SQL, как мне кажется, достаточно будет заменить ', " и ` на ', " и ` соответственно. Этим мы обеспечиваем невозможность выхода в тело запроса и добавление параметров. Ну и, естесственно, в самих запросах не забывать обрамлять параметры кавычками.
Этого будет достаточно или я что-то упустил?
XSS. Здесь всё намного запутаннее. Начиная от банального "<script>" и внедрения кода в тег img или url до использования строки с символами обрашёнными в hex. Строку такую браузер сначала дешифрует, и только потом исполняет. А вот фильтровать такую заразу довольно напряжно. Кроме того, есть ещё такая напасть как utf-7.
Есть у кого какие наработки, которыми не жалко поделиться?
Ещё в тему есть вопрос об исполнении php-сценариев в рисунках. Когда маленькая пикча открывается в блокноте и там ручками дописывается "<?php ...".Чтобы избежать подобных казусов, нужно просто не добавлять алиас на исполнение *.jpg через php.exe? Или что-то ещё?
И последний вопрос касается добавления в картинку JS кода. Где-то читал, что, например, через ACDSee в свойствах картинки в поле "описание" можно дописать JS, который прекрасно исполнится. Не экспериментировал, но возможность такая настораживает.
Ну и если ещё какие методы SQL и XSS забыл просьба напомнить и осветить методы борьбы.
Спасибо. | |
|
|
|
|
|
|
|
для: neudor
(24.04.2007 в 08:52)
| | >Насчёт SQL, как мне кажется, достаточно будет заменить ', " и ` на ', " и `
>соответственно. Этим мы обеспечиваем невозможность выхода в тело запроса и добавление
>параметров. Ну и, естесственно, в самих запросах не забывать обрамлять параметры
>кавычками.
>Этого будет достаточно или я что-то упустил?
Нет этого не достаточно в общем случае, так как бывают SQL-инъекции без использования кавычек. Числовые значения следует проверять на предмет того, являются ли они числовыми. Тектовые значени лучше проверять при помощи конструкции
<?php
if (!get_magic_quotes_gpc())
{
$text = mysql_escape_string($text);
}
?>
|
>XSS.
Достаточно пропускать весь текст, который вводит пользователь перед выводом через htmlspecialchars(). | |
|
|
|
|
|
|
|
для: cheops
(24.04.2007 в 13:42)
| | а если я напишу
[URL=javascript:alert(document.cookie)]что-то интересное[/URL]
то здесь htmlspecialchars() не поможет.
Есть ли что понадёжнее чем сия функция? | |
|
|
|
|
|
|
|
для: neudor
(24.04.2007 в 15:30)
| | ну дык на скока я понимаю при таком вводе ничего и не произойдет так как не указаны тэги <script> и </script>... | |
|
|
|
|
|
|
|
для: malish
(24.04.2007 в 15:34)
| | а вы попробуйте создать документ с содержанием
<a href="javascript:alert('1')">111</a>
и кликните по ссылке. | |
|
|
|
|
|
|
|
для: neudor
(24.04.2007 в 16:00)
| | ну так после того как вы обработаете данные функцией htmlspecialchars() все тэги будут эранированы и данный код не сработает..
htmlspecialchars() экранирует все тэги.. а без тэгов <script> функции javascript выполнятся не будут | |
|
|
|
|
|
|
|
для: neudor
(24.04.2007 в 16:00)
| | У функции htmlspecialchars() имеется второй параметр, который позволяет переводить кавычки в HTML-форму - без кавычек вредоносный скрипт очень сложно будет создать. | |
|
|
|
|
|
|
|
для: neudor
(24.04.2007 в 15:30)
| | если вы это напишете, то ничего не произойдет. А вот если вы накосячите с этой строкой в процессе отображения, то может и произойти.
но ваши косяки к функции htmlspecialchars() не имеют ни малейшего отношения | |
|
|
|
|
|
|
|
для: Loki
(24.04.2007 в 17:42)
| | простите великодушно.
ковырял форум на предмет xss. не сумел.
просьба к модераторам удалить сообщение. | |
|
|
|