Безопасность - нужен совет
1.
Apeccc (18.06.2011 / 19:41)
Есть класс защиты от SQL inj + проверка $_GET и $_POST.
Прошу прокомментировать, будет ли данный код выполнять свою функцию и насколько такой класс безопасен.
class InitVars {
# Недопустимые слова в запросахINSERT
var $deny_words = array('UNION','CHAR','INSERT','DELETE','SELECT','UPDATE','GROUP','ORDER','BENCHMARK','union','char','insert','delete','select','update','group','order','benchmark');
# Метод конвентирует суперглобальные массивы $_POST, $_GET в перемнные
# Например : $_GET['psw'] будет переобразовано в $psw с тем же значением
function convertArray2Vars () {
foreach($_GET as $_ind => $_val) {
global $$_ind;
if(is_array($$_ind)) $$_ind = htmlspecialchars(stripslashes($_val));
}
foreach($_POST as $_ind => $_val) {
global $$_ind;
if(is_array($$_ind)) $$_ind = htmlspecialchars(stripslashes($_val));
}
}
Добавлено через 00:17 сек.
# Метод проверяет $_GET и $_POST переменные на наличие опасных данных и SQL инъекций
function checkVars() {
//Проверка опасных данных.
foreach($_GET as $_ind => $_val) {
$_GET[$_ind] = htmlspecialchars(stripslashes($_val));
$exp = explode(" ",$_GET[$_ind]);
foreach($exp as $ind => $val) {
if(in_array($val,$this->deny_words)) $this->antihack("Запрещено!Доступ закрыт!<br> Ваш ip адресс помечен!");
}
}
foreach($_POST as $_ind => $_val) {
$_POST[$_ind] = htmlspecialchars(stripslashes($_val));
$exp = explode(" ",$_POST[$_ind]);
foreach($exp as $ind => $val) {
if(in_array($val,$this->deny_words)) $this->antihack("Запрещено!Доступ закрыт!<br> Ваш ip адресс помечен!");
}
}
}
function antihack($msg) {
echo '<font color="red"><b>Antihack error: </b></font>'.$msg.'<br>\n';
die;
}
}
2.
ramzes (18.06.2011 / 19:44)
это уже наверное сотый раз на этом форуме))
нет, плохая защита
фильтруется все подряд, что надо и не надо,
не учитывается тип данных
фильтровать надо на месте
3.
Apeccc (18.06.2011 / 19:46)
2.
ramzes, маэстро, последствия какие такой защиты?
Т.е вовсе небезопасная функция?
4.
ramzes (18.06.2011 / 19:50)
Нифигасе сказал я се (18 Июня 2011 / 19:46)
2. ramzes, маэстро, последствия какие такой защиты?
Т.е вовсе небезопасная функция?
смысл в этой защите?
у тебя переменна номера страниц будет как строка фильтроваться
потом еще раз придется ее как число проверять
гет вообще имеет много данных которые фильровать не за чем т.к. они не используются.
+ несколько циклов, и в них вызов функций фильтации, все это дает нагрузку, а по факту кпд стремится к нулю
много раз обсуждали подобные заходы
5.
KOZZ (18.06.2011 / 19:51)
3.
Нифигасе сказал я се, идиотизм а не защита.
фильтровать надо все, что получаем от юзера,
согласно тому, что мы хотим получить от него, и что можем ему позволить.
в админке например я разрешаю в редактировании счетчиков итп html теги, а для этого мне
не нужно переводить их в html эквиваленты. а с такой защитой мне придется крутить педали велосипеда в обратную сторону.
6.
Apeccc (18.06.2011 / 19:53)
5.
eGo Свободу Пандам, это класс защиты онлайн игры, поэтому мне это не критично.
Какую функцию лучше всего использовать повсевместно ?
7.
KOZZ (18.06.2011 / 19:54)
6.
Нифигасе сказал я се, да ничего не нужно использовать повсеместно вообще.
фильтровать только на месте, только то, что нужно, и именно так, как я описал выше
Добавлено через 00:30 сек.
это класс защиты онлайн игры, поэтому мне это не критично
лишняя и ненужная нагрузка разве не критична для онлайн игры?
8.
Apeccc (18.06.2011 / 19:55)
7.
eGo Свободу Пандам, на месте - какой функцей, дабы не получить SQL inj?
Добавлено через 00:24 сек.
7.
eGo Свободу Пандам, соглашусь, что критична, но т.к код не мой - вот и спрашиваю
9.
KOZZ (18.06.2011 / 19:58)
8.
Нифигасе сказал я се, для POST данных что - то в таком роде:
<?
# защита входных данных (для юзеров)
function check_in($var){
return mysql_real_escape_string(trim(htmlentities($var, ENT_QUOTES, 'UTF-8')));
}
?>
10.
ramzes (18.06.2011 / 20:00)
9.
eGo Свободу Пандам, и intval() , (int)
11.
Apeccc (18.06.2011 / 20:01)
Всем спасибо
Плюсики позже раздам
12.
KOZZ (18.06.2011 / 20:01)
10.
ramzes, ну это уже если циферки проверяем, я - то имел ввиду текст
P.S: для положительных чисел лучше abs(intval()), ибо нефиг
13.
ramzes (18.06.2011 / 20:14)
12.
eGo Свободу Пандам, это понятно,
я к тому что волки отдельно овцы отдельно
14.
Apeccc (18.06.2011 / 20:15)
13.
ramzes, если что - я в приват к тебе обращусь. Думаю, в помощи не откажешь?
15.
KOZZ (18.06.2011 / 20:20)
13.
ramzes, ну разумеется
16.
ramzes (18.06.2011 / 20:33)
14.
Нифигасе сказал я се, только времени у меня обычно только на вот такие вот бессмысленные посты и хватает))
URL:
https://visavi.net/topics/22533