Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.06.2009, 13:48   #1
Linel
Форумчанин
 
Аватар для Linel
 
Регистрация: 21.02.2009
Сообщений: 372
Вопрос SQL инъекции

Чтение последних топиков вызвал у меня вопрос о SQL-инъекциях и способах защиты от них. Думаю, что эта тема актуальна, но поиск по форуму ничего толкового не дал. Поисковики тоже не помогли. В интернете есть много информации на эту тему, но разные статьи местами противоречат друг другу. Решил спросить тут, надеюсь вы поможете мне.

И так, с тем, что такое SQL-инъекции вроде разобрался. Главный вопрос - как избежать непредсказуемых последствий и защитить базу данных, обезопасив свой проект?

Со случаем, когда методом $_POST или $_GET должны передаваться значения целого типа вроде всё ясно. Во всех статьях дан чётко поставленный ответ - надо приводить преданную информацию к типу "integer", например:

(int)$variable или settype($variable, "integer"), где $variable - наша переменная.

А вот что делать в случае, когда необходимо получить информацию типа "string" и произвести над ней определённые действия (добавить/прочитать из базы данных, обновить и т.д.)?

Нигде вразумительного ответа на этот вопрос я не нашёл. Надеюсь, вы поможете.
No name. Just Linel.
Linel вне форума Ответить с цитированием
Старый 17.06.2009, 14:50   #2
Jensi
beneto.ru
Форумчанин
 
Регистрация: 09.03.2009
Сообщений: 174
По умолчанию

Нужно фильтровать данные, передаваемые через URL.
Почитать можно тут: http://beneto.ru/showcat.php?c=35
Хочу заметить, на сайте есть $_GET['c'] ( смотрим на URL ),там стоят только числа, вот тебе и нужно написать регулярное выражение,которое будет проверять, только числа там или ещё что-то
Способов много
p.s.: сайт мой, тестить с URL или чем-то другим не получится, всё закрыто
Jensi вне форума Ответить с цитированием
Старый 17.06.2009, 16:09   #3
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

Jensi прав, копай в сторону рег. выражений.
PHP код:
if (preg_match('/\W/',$per_value)) {
   
// сказать что ошибка
   
exit;

Этот код допускает к инпуту только наглийские буквы, цифры и знак "_" по-моему.
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума Ответить с цитированием
Старый 19.06.2009, 21:27   #4
Mixail
 
Регистрация: 14.09.2008
Сообщений: 9
По умолчанию

Дополню выше пример если нужно русские, английские и пунктуация, тогда
Код:
if (preg_match('/[-a-zА-Яа-Я_=\,\.\?]+/i',$per_value))
   //True
else
   //False;
Mixail вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
sql или не sql Diamand SQL, базы данных 9 18.09.2008 17:17
SQL stepchild Помощь студентам 1 28.05.2008 21:58
Запросы SQL и PL/SQL sharpest Фриланс 1 05.02.2008 18:58
sql ben95 SQL, базы данных 0 02.02.2008 13:40
SQL запрос на основе другого SQL запрса... Timoxa БД в Delphi 1 07.01.2007 18:15