ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Анти SQL injection
  #1  
Старый 11.12.2007, 07:14
Аватар для guest3297
guest3297
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме:
3887520

Репутация: 2996


По умолчанию Анти SQL injection

Можно легко обезапасить любю cms поставив грамотную фильтрацию, так что если вы не уверненны в своем движке или в чужом просто просто проводите все запросы через эту функцию.

PHP код:
<?

error_reporting
(0);

function 
HLSQL($Query)
{
    
$Query=preg_replace("/(\s{1})(JOIN)/""\\1\nJOIN"$Query);
    
$Query=preg_replace("/([^a-zA-Z]{1})([\d0-9]+)/""\\1<span style=\"color:6666CC\">\\2</span>"$Query);

    
$Query=preg_replace("/('[^']+')/""<span style=\"color:FF9900\">\\1</span>"$Query);
    
$Query=preg_replace("/(#.*\n)/""<span style=\"color:999999\">\\1</span>"$Query);
    
$Query=preg_replace("/FROM[\s+](\S+)\s/""FROM <span style=\"color:339900;text-decoration:underline\">\\1</span> "$Query);

    
$Query=preg_replace("/JOIN[\s+](\S+)\s/""JOIN <span style=\"color:339900;text-decoration:underline\">\\1</span> "$Query);
    
$Query=preg_replace("/(COUNT|SUM)\(([^\)]+)\)/""<span style=\"color:FF0000;font-weight:bold\">\\1</span>(\\2)"$Query);


    
$Query=preg_replace("/\s{1}(FROM|JOIN|GROUP|WHERE|ORDER|LIMIT|AND|ON)\s{1}/"" <span style=\"color:0000FF;font-weight:bold;\">\\1</span> "$Query);
    
$Query=preg_replace("/\s{1}(BY|OR|AS|IN|BETWEEN)\s{1}/"" <span style=\"color:000000;font-weight:bold;\">\\1</span> "$Query);
    
$Query=preg_replace("/(SELECT)/"" <span style=\"color:0000FF;font-weight:bold;\">\\1</span> "$Query);
    
$Query=preg_replace("/\(/""<span style=\"font-weight:bold;\">(</span>"$Query);
    
$Query=preg_replace("/\)/""<span style=\"font-weight:bold;\">)</span>"$Query);


    return 
"<p style=\"color:000000; font-size:12px;\">".nl2br($Query)."</p>";
}

?>
 
Ответить с цитированием

  #2  
Старый 11.12.2007, 07:52
Аватар для VampiRUS
VampiRUS
Участник форума
Регистрация: 31.12.2005
Сообщений: 231
Провел на форуме:
1106266

Репутация: 366
Отправить сообщение для VampiRUS с помощью Yahoo
По умолчанию

а про placeholders вы не слышали?
 
Ответить с цитированием

  #3  
Старый 11.12.2007, 08:02
Аватар для XopoIII
XopoIII
Постоянный
Регистрация: 29.10.2007
Сообщений: 381
Провел на форуме:
651930

Репутация: 65
По умолчанию

Цитата:
Сообщение от VampiRUS  
а про placeholders вы не слышали?
я не слышал=) обьясняй=)
 
Ответить с цитированием

  #4  
Старый 11.12.2007, 08:09
Аватар для VampiRUS
VampiRUS
Участник форума
Регистрация: 31.12.2005
Сообщений: 231
Провел на форуме:
1106266

Репутация: 366
Отправить сообщение для VampiRUS с помощью Yahoo
По умолчанию

http://rumchten.rsl.ru/2005/ru/upload/doc/1103016958.doc
 
Ответить с цитированием

  #5  
Старый 11.12.2007, 09:09
Аватар для XopoIII
XopoIII
Постоянный
Регистрация: 29.10.2007
Сообщений: 381
Провел на форуме:
651930

Репутация: 65
По умолчанию

попробовал эту библиотеку, сразу же застрял кричит ошибка
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in
в этой стрке
PHP код:
$whonline=mysql_fetch_array($user_online); 
до нее
PHP код:
$online =sql_placeholder('SELECT * FROM users_reg WHERE '.time().'-`login_time` <= 60*2');
$user_online mysql_query($online); 
 
Ответить с цитированием

  #6  
Старый 11.12.2007, 09:18
Аватар для XopoIII
XopoIII
Постоянный
Регистрация: 29.10.2007
Сообщений: 381
Провел на форуме:
651930

Репутация: 65
По умолчанию

пробовал уже и так и этак, эффект одинаковый, но вот если отрубаю библиотеку и ставлю обычные ковычки то все работает=)) бредд
 
Ответить с цитированием

  #7  
Старый 11.12.2007, 13:38
Аватар для .:EnoT:.
.:EnoT:.
Постоянный
Регистрация: 29.05.2007
Сообщений: 852
Провел на форуме:
4832771

Репутация: 1916


По умолчанию

Имхо, вполне хватит фильтрации основных опасных символов чтобы противостоять иньекции. ну плюс-минус конечно
PHP код:
<?php
   $query 
$_POST['query'];
   
$query str_replace("'",''$query);
   
$query str_replace('-',''$query);
   
$query str_replace('+',''$query);
   
$query str_replace('/',''$query);
   
$query str_replace('*',''$query);
   
$query str_replace(' ','',$query);
   
$query str_replace('%','',$query);
?>
После фильтрации этих символов sql-инъекция уже и так будет невозможна....Ещё в одном учебнике по php читал что одинарную кавычку лучше не просто фильтровать а заменять на обратную ` .. не знаю насколько эт лучше и сопстна зачем))
Ну Кэш всё равно молодец, лови +
 
Ответить с цитированием

  #8  
Старый 11.12.2007, 13:59
Аватар для VampiRUS
VampiRUS
Участник форума
Регистрация: 31.12.2005
Сообщений: 231
Провел на форуме:
1106266

Репутация: 366
Отправить сообщение для VampiRUS с помощью Yahoo
По умолчанию

ну собственно это я кинул для описания сути placeholders
сам я успользую простенькую функцию, взятую из учебника Котерова, мне пока хватает.
 
Ответить с цитированием

  #9  
Старый 11.12.2007, 14:17
Аватар для guest3297
guest3297
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме:
3887520

Репутация: 2996


По умолчанию

Цитата:
<?php
$query = $_POST['query'];
$query = str_replace("'",'', $query);
$query = str_replace('-','', $query);
$query = str_replace('+','', $query);
$query = str_replace('/','', $query);
$query = str_replace('*','', $query);
$query = str_replace(' ','',$query);
$query = str_replace('%','',$query);
?>
Если в самой переменной не заданно что данные только пост ac. фильтрацию легко можно обойти постав данные гет.
 
Ответить с цитированием

  #10  
Старый 11.12.2007, 14:29
Аватар для Macro
Macro
Постоянный
Регистрация: 11.11.2006
Сообщений: 595
Провел на форуме:
1845062

Репутация: 1079


По умолчанию

<?php
$query = $GLOBALS['query'];
$query = str_replace("'",'', $query);
$query = str_replace('-','', $query);
$query = str_replace('+','', $query);
$query = str_replace('/','', $query);
$query = str_replace('*','', $query);
$query = str_replace(' ','',$query);
$query = str_replace('%','',$query);
?>
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обнаружение Sql инъекций в Oracle, часть вторая k00p3r Чужие Статьи 0 13.06.2005 11:26
Sql инъекция и Oracle, часть первая k00p3r Чужие Статьи 0 13.06.2005 11:23
Внедрение Sql кода с завязанными глазами k00p3r Чужие Статьи 0 12.06.2005 20:48
SQL Injection для чайников, взлом ASP+MSSQL k00p3r Чужие Статьи 0 12.06.2005 12:42
SQL Injection в Oracle k00p3r Чужие Статьи 0 12.06.2005 12:41



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ