ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

03.01.2007, 23:08
|
|
Постоянный
Регистрация: 14.05.2006
Сообщений: 334
Провел на форуме: 1543521
Репутация:
272
|
|
2Termin@L
Спасибо братик. А как юзать ereg_replace, чтобы заменить все опасные символы на "". Типа так:
Код:
if(!ereg("[А-Яа-яa-zA-Z0-9]{1,8}",$value))
{
$value=ereg_replace("[А-Яа-яa-zA-Z0-9]{1,8}","",$value)
}
или нет?
Что-то вот так, не заменяется символы в строке
Код:
function filter(&$value)
{
$b=FALSE;
if(!ereg('[А-Яа-яa-zA-Z0-9,._"-]{1,8}',$value))
{
$value=ereg_replace('[А-Яа-яa-zA-Z0-9,._"-]{1,8}','',$value);
$b=TRUE;
}
return $b;
}
Последний раз редактировалось je0n; 03.01.2007 в 23:17..
|
|
|

03.01.2007, 23:21
|
|
♠ ♦ ♣ ♥
Регистрация: 18.05.2006
Сообщений: 1,828
Провел на форуме: 8042357
Репутация:
3742
|
|
Зако писал антихак систему ) в принципе чуток доработать под сеья и норм
__________________
Привет! Меня зовут Джордж, и я хотел бы рассказать вам про реинкарнацию (ц) 2x2
|
|
|

04.01.2007, 02:16
|
|
Постоянный
Регистрация: 14.05.2006
Сообщений: 334
Провел на форуме: 1543521
Репутация:
272
|
|
Короче вот что получилось. Прошу сказать, возможен ли обход, если да, то что надо поправить, чтобы все было пучком?
Код:
function filter(&$value)
{
$b=FALSE;
if(ereg("([;/'<>])|(union)",$value))
{
$value=ereg_replace("([;/'<>])|(union)","",$value);
$b=TRUE;
}
return $b;
}
|
|
|

04.01.2007, 12:40
|
|
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме: 6490435
Репутация:
2290
|
|
Читаю ваши куски и думаю: то ли я совасем дурак, то ли вы:
не легче ли просто нормально добавлять запись в базу? И ВСЕ!
Нахер вырезать из запроса какие-то символы? Нахер проверять запрос?
СУБД - она на то и СУБД, что может принять все данные, причем делать это правильно.
Наша задача - просто правильно их ей передать.
|
|
|

04.01.2007, 12:47
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме: 5339610
Репутация:
4360
|
|
Да, обход возможен. Возможна sql-inj в целочисленном параметре скрипта, где не требуется кавычка для выхода за пределы значения в запрос.
|
|
|

04.01.2007, 12:58
|
|
Участник форума
Регистрация: 09.12.2005
Сообщений: 162
Провел на форуме: 701592
Репутация:
91
|
|
Имхо самая простая защита от sql это Если переменная строковая, то просто убрать все виды кавычек.
От XSS думаю htmlspecialchars(); спасет, хотя иногда лучьше ereg()
|
|
|

04.01.2007, 14:34
|
|
Участник форума
Регистрация: 05.02.2006
Сообщений: 168
Провел на форуме: 749524
Репутация:
715
|
|
Код:
<?php
$val = (int)$_GET['val'];
$val = mysql_escape_string($val);
$q = mysql_query("SELECT id,name,etc FROM table WHERE val = '$val'");
if (!$q)
{
echo '<br>Неверное значение переменной $val';
}
else
{
while ($a = mysql_fetch_array($q))
{
$id = $a['id'];
$name = $a['name'];
$etc = $a['etc'];
$name = htmlspecialchars($name);
$etc = htmlspecialchars($etc);
// вывод результата
}
}
?>
Вроде все понятно.
|
|
|

04.01.2007, 17:20
|
|
Постоянный
Регистрация: 14.05.2006
Сообщений: 334
Провел на форуме: 1543521
Репутация:
272
|
|
Ага понятно... Понятно, что я гнал пытаюсь защититься от XSS и SQL-enj в одной функции 
|
|
|

04.01.2007, 17:58
|
|
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме: 6490435
Репутация:
2290
|
|
Ага понятно... Понятно, что я гнал пытаюсь защититься от XSS и SQL-enj в одной функции
Ты просто не понимаешь, как работает БД 
|
|
|

05.01.2007, 07:00
|
|
Участник форума
Регистрация: 04.01.2007
Сообщений: 112
Провел на форуме: 179531
Репутация:
48
|
|
Вот мой способ предотвратить какие либо попытки SQL injection или XSS
PHP код:
function var_chek($var,$col){
$var = substr($var, 0, $col);
$var = preg_replace("/[^\w\x7F-\xFF\s]/", " ", $var);
$good = ereg_replace(" +", " ", $var);
$good = strip_tags($good);
return $good;
}
$var=var_chek($_GET['var'],4);
Если значение $var это просто передаваемый индекс для выборки из базы то достаточно его обрезать до 4-х символов, в 4 символа точно ничего не впишешь...
А если идет запись данных в базу то вот пример работы скрипта:
PHP код:
/*В переменную VAR передадим код ну к примеру
такой - "><script>alert()</script>*/
$var=$_GET['var'];
mysql_query("INSERT INTO base SET text='".var_chek($var)."'");
/*И в базу уйдут такие данные - script alert script , И
даже если будете передавать SQL инжекцию то
данные будут записаны в базу просто как такст!*/
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|