![]() | ![]() |

Изм. Kolyan (20.10.2009 / 16:34) [1]
![]() | ![]() ![]() |
я вообще не пользуюсь не mysql_real_escape_string() не htmlspecialchars() не пользуюсь! я написал свою функцию замены символов, на html теги
.gif)
Не следует изобретать велосипед, если он уже изобретен и выполняет свои функции.
Встроенные функции в большинстве случаев намного быстрее.
![]() | ![]() ![]() |
.gif)
![]() | ![]() |
![]() | ![]() |
Ну допустим если написать такой текст echo 'text'; то htmlspecialchars() не даст записать в базу
.gif)
Я например предпочитаю htmlentities() с параметром ENT_QUOTES и UTF-8
![]() | ![]() |
Если данные загружаешь в базу, то опасные (управляющие для базы) символы нужно прослэшивать.
Лучше всего с этим справляется mysql_real_escape_string()
А вот уже при выводе в браузер, можно обрабатывать HTML символы и прочую хуйню.
![]() | ![]() ![]() |
.gif)
![]() | ![]() ![]() |
Речь идет о обработке данных посетителя ...Ну ...все равно идиот ( Зачем echo''; пихать в базу?еба! допустим сайт для мастеров! и вот кто то вставляет кусок кода, и там присутствует одинарная кавычка! логично?
![]() | ![]() |
Когда принимаешь от клиента обрабатывай
$text = trim($_POST['text']);
это ты занес в переменную, но в базу еще добавлять нельзя, будет инъекция.
Перед добавлением нужно обработать:
$text = mysql_real_escape_string($text);
И все, инъекция уже не страшна.
---
А когда достаешь из базы и выводишь в браузер, нужно обработать htmlentities() или htmlspecialchars() чтоб хакеры не подпихнули всякую гадость.
И будет тебе счастье

![]() | ![]() |
echo '';
![]() | ![]() |
![]() | ![]() |
![]() | ![]() ![]() |
.gif)
![]() | ![]() |
На форуме, данные хранятся так. как поступают от клиента, при записи обрабатываются реал_ескейпом, а при выводе htmlentities()
![]() | ![]() |
Дедушко_АнаниЙ, это я понял! я не понимаю разницы, если экранирова при записи, либо выводе
.gif)
С необработанным текстом легче работать.
К примеру, надо тебе порезать на 200 символов. А вдруг, эта обрезка попадает на XHTML сущность, например, посередине & и вот тебе, ошибка XHTML.
---
Я на форуме JohnCMS смог полностью избавиться от этих ошибок только тогда, когда перевел на чистое хранение.
---
Ну а короткие тексты, типа названия статьи, или ника, или города, можно обрабатывать и на входе, разницы нет.
![]() | ![]() ![]() |
![]() | ![]() ![]() |
.gif)
.gif)
![]() | ![]() |
=====
Принцип атаки внедрения SQL
Допустим, серверное ПО, получив входной параметр id, использует его для создания SQL-запроса. Рассмотрим следующий PHP-скрипт:
# Предыдущий код скрипта...
$id = $_REQUEST['id'];
$res = mysql_query("SELECT * FROM news WHERE id_news = $id");
# Следующий код скрипта...
Если на сервер передан параметр id, равный 5 (например так: http://example.org/script.php?id=5), то выполнится следующий SQL-запрос:
SELECT * FROM news WHERE id_news = 5
Но если злоумышленник передаст в качестве параметра id строку -1 OR 1=1 (например, так: http://example.org/script.php? ... R+1=1), то выполнится запрос:
SELECT * FROM news WHERE id_news = -1 OR 1=1
Таким образом, изменение входных параметров путём добавления в них конструкций языка SQL вызывает изменение в логике выполнения SQL-запроса (в данном примере вместо новости с заданным идентификатором будут выбраны все имеющиеся в базе новости, поскольку выражение 1=1 всегда истинно).
![]() | ![]() |
http://www.youtube.com/watch?v ... BsIOY
![]() | ![]() ![]() |
Это-же запросы к базе.Они соотносятсо к скрипту который построен на базе данных. ===== Принцип атаки внедрения SQL Допустим, серверное ПО, получив входной параметр id, использует его для создания SQL-В данном случае выручит intval()