Защита сайта от SQL-Injection!
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Защита сайта от SQL-Injection! - 2011-01-24 18:10:25.856666
|
|
|
Fliridicter
Сообщений: 34
Оценки: 0
Присоединился: 2011-01-04 12:28:36.730000
|
Всем привет! Нашёл такой-вот скрипт: <!-- sql.php -->
<?
$get_ar = array_values($_GET);
$c_a_g = count($get_ar);
for ($i = 0;$i < $c_a_g;$i++){
if(eregi('union(.*)select',$get_ar[$i])){ header("Location: http://site.com"); exit; }
if(eregi('order(.*)by',$get_ar[$i])){ header("Location: http://site.com"); exit; }
}
$post_ar = array_values($_POST);
$c_a_p = count($post_ar);
for ($i = 0;$i < $c_a_p;$i++){
if(eregi('union(.*)select',$post_ar[$i])){ header("Location: http://site.com"); exit; }
if(eregi('order(.*)by',$post_ar[$i])){ header("Location: http://site.com"); exit; }
}
?> Обращаюсь к профессионалам - тем, кто хорошо разбирается в этом. Надёжен ли этот скрипт относительно безопасности и защиты? Ещё я использую такое вот условие: if (!get_magic_quotes_gpc()){
$variable = mysql_real_escape_string($variable);
$variable = mysql_real_escape_string($variable);}
$variable = HТМLspecialchars(strip_tags($variable));
$variable = HТМLspecialchars(strip_tags($variable)); Достаточно ли этого?
|
|
|
RE: Защита сайта от SQL-Injection! - 2011-01-25 18:49:46.530000
|
|
|
Fliridicter
Сообщений: 34
Оценки: 0
Присоединился: 2011-01-04 12:28:36.730000
|
ну что? не знаете чтоль?
|
|
|
RE: Защита сайта от SQL-Injection! - 2011-01-26 11:24:51.903333
|
|
|
Papa James
Сообщений: 438
Оценки: 0
Присоединился: 2009-12-07 13:36:18.370000
|
Нет, не надежен. Хотя все зависит от запросов в БД
|
|
|
RE: Защита сайта от SQL-Injection! - 2011-01-26 15:11:21.123333
|
|
|
Fliridicter
Сообщений: 34
Оценки: 0
Присоединился: 2011-01-04 12:28:36.730000
|
А какими должны быть запросы к БД?
|
|
|
RE: Защита сайта от SQL-Injection! - 2011-01-30 02:07:13.946666
|
|
|
Agent Smith
Сообщений: 976
Оценки: 0
Присоединился: 2007-04-10 21:56:49.593333
|
Скорее всего этот скрипт был приведен там, где ты его нашел, в качетсве примера и автор не парился над безопасностью, что бы показать какую-то другу фичу, однако в серьезных проектах, никто обычно не пишет сырые запросы, а существует свой набор обработчков SQL запросов, которые фильтруют любые инекции. Вот на пример: $this->db->select_result_array("my_table", "*", array("field"=>"value")); где в класе db создан метод для того, что бы вынять массивом все значения из таблицы my_table, что отвечают заданным параметрам. Короче советую посмотреть Codeigniter (http://code-igniter.ru/)
|
|
|
RE: Защита сайта от SQL-Injection! - 2011-02-21 02:57:40.383333
|
|
|
sylord
Сообщений: 7
Оценки: 0
Присоединился: 2011-02-21 00:23:08.830000
|
Всегда лучше «запрещено все что не разрешено» а не «разрешено все что не запрещено» и зачем проверять весь пост и гет? если файл отправить? а если 10 сразу? или строку? скрипт просто сожрет все ресурсы. лучше написать функции валидаторы для конкретных типов и применять для каждого значения.
|
|
|
RE: Защита сайта от SQL-Injection! - 2011-02-21 05:56:02.510000
|
|
|
DEH
Сообщений: 195
Оценки: 0
Присоединился: 2007-01-13 22:27:31.370000
|
А как в codeigniter быть с запросами с джойнами, юнионами и прочим? Ибо сам себя только что словил на мысли что у меня все запросы через db->query() … Сори за небольшой оффтоп..
|
|
|
RE: Защита сайта от SQL-Injection! - 2011-02-21 06:21:46.803333
|
|
|
sylord
Сообщений: 7
Оценки: 0
Присоединился: 2011-02-21 00:23:08.830000
|
Если это был вопрос ко мне то я понятия не имею как потому как codeigniter не рыл и рыть не собираюсь. Хотя не понимаю суть вопроса, в чем проблема в db->query() написать джойн или юнион ?
|
|
|
RE: Защита сайта от SQL-Injection! - 2011-02-21 06:59:03.593333
|
|
|
DEH
Сообщений: 195
Оценки: 0
Присоединился: 2007-01-13 22:27:31.370000
|
Вопрос не к вам. Никаких проблем. Agent Smith написал, что лучше работать в CI, где для работы с БД можно использовать функции, в которых предусмотрена валидация и прочее. Вопрос следующий: как в этих вот кодигнитеровских функциях делать сложные запросы с юнионами, джоинами, даже с банальными директивами типа SQL_CALC_FIND_ROWS, кроме как через эту самую query(). Спасибо.
|
|
|
|
|