HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 09.01.2007, 04:50
Xex
Banned
Регистрация: 10.07.2005
Сообщений: 224
С нами: 10966535

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

Цитата:
Сообщение от Zadoxlik  
Это все ясно, только ты не раскрыл тему=)
Согласен,
забыли про грамотное распределение прав в СУБД.
 
Ответить с цитированием

  #12  
Старый 09.01.2007, 10:27
nerezus
Флудер
Регистрация: 12.08.2004
Сообщений: 3,791
С нами: 11444066

Репутация: 2290


По умолчанию

вы еще про хранимые функции скажите =)))
 
Ответить с цитированием

  #13  
Старый 09.01.2007, 10:49
Dracula4ever
Постоянный
Регистрация: 08.05.2006
Сообщений: 559
С нами: 10531106

Репутация: 354


По умолчанию

Чтобы защитится от SQL Injection надо, прежде всего надо распределять по его видам.
К примеру, если мы хотим получить целое число (int) надо чтобы шла проверка что это число и правда целое.
Это можно осуществить с помощью функнии IsNumeric в таком виде:
Цитата:
If (not IsNumeric(Request("ID"))) then ...
Так же надо чтобы не показывались ошибки, которые приводят к взлому сайта.
Есть полно путей сделать это, но помойму лучше всего это осуществить с помощью того, что есть ошибка работа не прекратилась.
Цитата:
номер ошибки error resume next
 
Ответить с цитированием

  #14  
Старый 09.01.2007, 14:09
nerezus
Флудер
Регистрация: 12.08.2004
Сообщений: 3,791
С нами: 11444066

Репутация: 2290


По умолчанию

Цитата:
надо чтобы шла проверка что это число и правда целое
Во-первых, никаких проверок не надо! Сколько раз повторять?
Во-вторых, int не может быть не целым!
 
Ответить с цитированием

  #15  
Старый 09.01.2007, 14:56
k1b0rg
Тут может быть ваша реклама.
Регистрация: 30.07.2005
Сообщений: 1,243
С нами: 10937126

Репутация: 1316


По умолчанию

error_reporing(0);
magic_quotes on

и числа передаваемые базе тоже обрамляем ковычками типо
Цитата:
.. where id ='1'

и хакеры прутся полем
 
Ответить с цитированием

  #16  
Старый 10.01.2007, 07:44
GHostly_FOX
Участник форума
Регистрация: 04.01.2007
Сообщений: 112
С нами: 10184169

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

Мой метод защиты:

Если вы передаете только текст и числа в скрипты к примеру:
index.php?modules=news&id=1
то вполне подойдет данный код:

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;
}

$modules=var_chek($modules,10);
$id=var_chek($id,5); 
Данный код не только удалит все спец символы из передаваемых строк но и обрезает по длинне, ни один XSS или SQL inj... не пройдет через этот фильтр.
 
Ответить с цитированием

  #17  
Старый 10.01.2007, 08:04
nerezus
Флудер
Регистрация: 12.08.2004
Сообщений: 3,791
С нами: 11444066

Репутация: 2290


По умолчанию

Цитата:
GHostly_FOX
Воот... прекрысный пример в тему как не надо делать...
 
Ответить с цитированием

  #18  
Старый 10.01.2007, 10:38
k1b0rg
Тут может быть ваша реклама.
Регистрация: 30.07.2005
Сообщений: 1,243
С нами: 10937126

Репутация: 1316


По умолчанию

Примерно такой же код используется в последних версиях phpbb
 
Ответить с цитированием

  #19  
Старый 10.01.2007, 11:47
_Great_
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
С нами: 10721066

Репутация: 4360


По умолчанию

так действительно делать не надо.
Лучшим средством будет типизирование параметров - явно прописать в скрипте имена параметров и их типы и соответствующе их парсить. Если int - делать intval(), если string - делать mysql_escape_string.
При выводе всех значений на экран обрамлять в htmlspecialchars, а резать это при передаче в БД - маразм.
Тут я на 100% согласен с nerezus'ом
 
Ответить с цитированием

  #20  
Старый 10.01.2007, 15:00
nerezus
Флудер
Регистрация: 12.08.2004
Сообщений: 3,791
С нами: 11444066

Репутация: 2290


По умолчанию

Цитата:
magic_quotes on
Обязательно off.
Т.к. иначе будет двойное экранирование.

И вообще magic_quotes, register_globals и т.д. отменили в PHP6, чтобы криворукие недокодеры не юзали их )

Цитата:
и числа передаваемые базе тоже обрамляем ковычками типо
Зачем?
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.

×

Внести депозит

Введите сумму USDT:

Принимается только USDT TRC20. Fake/Flash USDT не засчитывается.

×

Вывести депозит

Сумма USDT:

Ваш USDT TRC20 кошелек:

Заявка будет отправлена администратору.