HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 03.01.2007, 23:08
je0n
Постоянный
Регистрация: 14.05.2006
Сообщений: 334
Провел на форуме:
1543521

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

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..
 
Ответить с цитированием

  #12  
Старый 03.01.2007, 23:21
blackybr
♠ ♦ ♣ ♥
Регистрация: 18.05.2006
Сообщений: 1,828
Провел на форуме:
8042357

Репутация: 3742


Отправить сообщение для blackybr с помощью ICQ Отправить сообщение для blackybr с помощью AIM Отправить сообщение для blackybr с помощью Yahoo
По умолчанию

Зако писал антихак систему ) в принципе чуток доработать под сеья и норм
__________________
Привет! Меня зовут Джордж, и я хотел бы рассказать вам про реинкарнацию (ц) 2x2
 
Ответить с цитированием

  #13  
Старый 04.01.2007, 02:16
je0n
Постоянный
Регистрация: 14.05.2006
Сообщений: 334
Провел на форуме:
1543521

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

Короче вот что получилось. Прошу сказать, возможен ли обход, если да, то что надо поправить, чтобы все было пучком?
Код:
function filter(&$value)
{
  $b=FALSE;
  if(ereg("([;/'<>])|(union)",$value))
  {
    $value=ereg_replace("([;/'<>])|(union)","",$value);
    $b=TRUE;
  }
  return $b;
}
 
Ответить с цитированием

  #14  
Старый 04.01.2007, 12:40
nerezus
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме:
6490435

Репутация: 2290


Отправить сообщение для nerezus с помощью ICQ
По умолчанию

Читаю ваши куски и думаю: то ли я совасем дурак, то ли вы:
не легче ли просто нормально добавлять запись в базу? И ВСЕ!

Нахер вырезать из запроса какие-то символы? Нахер проверять запрос?
СУБД - она на то и СУБД, что может принять все данные, причем делать это правильно.

Наша задача - просто правильно их ей передать.
 
Ответить с цитированием

  #15  
Старый 04.01.2007, 12:47
_Great_
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме:
5339610

Репутация: 4360


Отправить сообщение для _Great_ с помощью ICQ
По умолчанию

Да, обход возможен. Возможна sql-inj в целочисленном параметре скрипта, где не требуется кавычка для выхода за пределы значения в запрос.
 
Ответить с цитированием

  #16  
Старый 04.01.2007, 12:58
Slon
Участник форума
Регистрация: 09.12.2005
Сообщений: 162
Провел на форуме:
701592

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

Имхо самая простая защита от sql это
PHP код:
settype($id,integer); 
Если переменная строковая, то просто убрать все виды кавычек.

От XSS думаю htmlspecialchars(); спасет, хотя иногда лучьше ereg()
 
Ответить с цитированием

  #17  
Старый 04.01.2007, 14:34
p-range
Участник форума
Регистрация: 05.02.2006
Сообщений: 168
Провел на форуме:
749524

Репутация: 715
Отправить сообщение для p-range с помощью ICQ
По умолчанию

Код:
<?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);
	// вывод результата
}
}
?>
Вроде все понятно.
 
Ответить с цитированием

  #18  
Старый 04.01.2007, 17:20
je0n
Постоянный
Регистрация: 14.05.2006
Сообщений: 334
Провел на форуме:
1543521

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

Цитата:
Вроде все понятно.
Ага понятно... Понятно, что я гнал пытаюсь защититься от XSS и SQL-enj в одной функции
 
Ответить с цитированием

  #19  
Старый 04.01.2007, 17:58
nerezus
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме:
6490435

Репутация: 2290


Отправить сообщение для nerezus с помощью ICQ
По умолчанию

Цитата:
Ага понятно... Понятно, что я гнал пытаюсь защититься от XSS и SQL-enj в одной функции
Ты просто не понимаешь, как работает БД
 
Ответить с цитированием

  #20  
Старый 05.01.2007, 07:00
GHostly_FOX
Участник форума
Регистрация: 04.01.2007
Сообщений: 112
Провел на форуме:
179531

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

Вот мой способ предотвратить какие либо попытки SQL injection или XSS

PHP код:
function var_chek($var,$col){
    
$var    =    substr($var0$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)
 


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




ANTICHAT.XYZ