|
|
|
| Полазил по форуму и узнал что текст нужно проверять
так:
<?
if (!get_magic_quotes_gpc())
{
$text = mysql_escape_string($text);
}
?>
|
а цифры так:
По какому принципу нужно действовать? Перед записью или как?
У меня большой скрипт (множество файлов) и мне нужно все профильтровать, подскажите как ориентироваться по большому количеству файлов, как искать? Глазами эт не реально.
Например для экранирования htmlspecialchars().
Я ищу в файлах слово echo, а что искать в моем случае? | |
|
|
|
|
|
|
|
для: Kolbo4ka
(24.09.2007 в 18:14)
| | > а что искать в моем случае?
Можбыть mysql_query()
Вообще нужно при получении данных очистить их от всяких пакостей, оставленных магическими кавычками:
if (get_magic_quotes_gpc())
{
$text = strip_slashes($text);
}
А потом, при добавлении данных в БД, использовать mysql_escape_string() | |
|
|
|
|
|
|
|
для: kasmanaft
(24.09.2007 в 19:15)
| | > strip_slashes
stripslashes() | |
|
|
|
|
|
|
|
для: kasmanaft
(24.09.2007 в 19:15)
| | >Вообще нужно
Вернее "можно ещё" - оба подхода рабочие и могут применяться. | |
|
|
|
|
|
|
|
для: Kolbo4ka
(24.09.2007 в 18:14)
| | >Перед записью или как?
Да
>Я ищу в файлах слово echo, а что искать в моем случае?
Это зависит от скрипта, но в большинстве случаев можно ориентироваться на mysql_query | |
|
|
|
|
|
|
|
для: cheops
(25.09.2007 в 11:21)
| | Большое спасибо Вы мне очень помогли.
Делаю так:
<?
$_GET = str_replace("'", '"', $_GET);
$_POST = str_replace("'", '"', $_POST);
$_COOKIE = str_replace("'", '"', $_COOKIE);
$_SERVER = str_replace("'", '"', $_SERVER);
function strips(&$el) {
if (is_array($el))
foreach($el as $k=>$v)
strips($el[$k]);
else $el = stripslashes($el);
}
if (get_magic_quotes_gpc())
{
strips($_GET);
strips($_POST);
strips($_COOKIE);
strips($_REQUEST);
if (isset($_SERVER['PHP_AUTH_USER'])) strips($_SERVER['PHP_AUTH_USER']);
if (isset($_SERVER['PHP_AUTH_PW'])) strips($_SERVER['PHP_AUTH_PW']);
}
?>
|
А после соединения с базой делаю так:
<?
if (!get_magic_quotes_gpc())
{
$_GET = mysql_escape_string($_GET);
$_POST = mysql_escape_string($_POST);
$_COOKIE = mysql_escape_string($_COOKIE);
$_SERVER = mysql_escape_string($_SERVER);
}
?>
|
и includ'ом вставляю во все скрипты, тока вот никак не могу узнать работает это или нет? =( | |
|
|
|
|
|
|
|
для: Kolbo4ka
(25.09.2007 в 23:44)
| | Подскажите? | |
|
|
|
|
|
|
|
для: Kolbo4ka
(26.09.2007 в 16:30)
| |
<?
$str = "as string's";
echo mysql_escape_string($str);
?>
|
| |
|
|
|
|
|
|
|
для: Kolbo4ka
(25.09.2007 в 23:44)
| | Вот это, наверно, лишнее
$_GET = str_replace("'", '"', $_GET);
$_POST = str_replace("'", '"', $_POST);
$_COOKIE = str_replace("'", '"', $_COOKIE);
$_SERVER = str_replace("'", '"', $_SERVER);
|
<?
// если магические кавычки включены, вырезали все обратные слеши.
if (get_magic_quotes_gpc())
{
strips($_GET);
strips($_POST);
strips($_COOKIE);
strips($_REQUEST);
if (isset($_SERVER['PHP_AUTH_USER'])) strips($_SERVER['PHP_AUTH_USER']);
if (isset($_SERVER['PHP_AUTH_PW'])) strips($_SERVER['PHP_AUTH_PW']);
}
* * * *
// если кавычки выключены, добавили слеши... Смысл тогда их отрезать наверху? =)
if (!get_magic_quotes_gpc())
{
$_GET = mysql_escape_string($_GET);
$_POST = mysql_escape_string($_POST);
$_COOKIE = mysql_escape_string($_COOKIE);
$_SERVER = mysql_escape_string($_SERVER);
}
// к тому же в mysql_escape_string() нужно сувать строку.
|
| |
|
|
|
|
|
|
|
для: kasmanaft
(26.09.2007 в 17:24)
| | Тоесть? Можно конкретнее что оставить а что убрать и вообще не понимаю работает это или нет =( | |
|
|
|
|
|
|
|
для: Kolbo4ka
(26.09.2007 в 19:19)
| | Нет, это правильно работать не может.
Оставить нужно что-то одно из двух.. Как заметил cheops, оба подхода рабочие.
Я бы оставил то, что до " * * * * ", а перед добавлением данных в БД использовал mysql_escape_string(). Прямо в запросе "SELECT * FROM `table` WHERE name='".mysql_escape_string($name)."'"
Суть в том, что перед запросом в БД, нужно экранировать все "опасные" символы. Если бы не было магических кавычек, было бы проще... Экранировал - и нет проблем.
А так может случиться, что магические кавычки экранировали спецсимволы, потом вы еще раз сделали это же. Получится бяка. Приходится учитывать: включены ли эти чудокавычки или нет. | |
|
|
|