Защита от SQL инекции в скрипте ff

14-05-2016, 15:34
3 280
1

Приветствую всех фермеров. Продолжаем серию статей по защите скрипта фруктовой фермы .
Как из названия ясно говорить мы будем о том как защитить ферму от инекции .

Инекции как правило выполняются через формы ввода данных; таких как чат , тикет, отзывы.
Что представляет собой sql инекция  это запрос выполняемый через поля ввода данных и нацеленный на то, что бы узнать какие либо данные.
Почему так получается?
Потому, что при разработке скриптов, разработчики зачастую забывают( а может быть и лениться) про безопасность. В нашем случае про фильтрацию вводимых значений.
К примеру поле ввода логина должно содержать латинские буквы и цифры и запрещать все прочее.

В данном случае я предлагаю вам простой код который поможет защитить вашу ферму. Конечно он не гарантирует 100% защиты, но все же это лучше, чем ничего.

Для того , что бы установить код идем в корневой каталог вашего сайта , открываем файл index.php и сразу после;

<?PHP


Вставляем данный код;


error_reporting(0); // вывод ошибок




if($_GET['menu']!='admin' && 'support'){
function limpiarez($mensaje){
$mensaje = htmlspecialchars(trim($mensaje));
$mensaje = str_replace("'","?",$mensaje);
$mensaje = str_replace(";","¦",$mensaje);
$mensaje = str_replace("$"," USD ",$mensaje);
$mensaje = str_replace("<","?",$mensaje);
$mensaje = str_replace(">","?",$mensaje);
$mensaje = str_replace('"',"”",$mensaje);
$mensaje = str_replace("%27"," ",$mensaje);
$mensaje = str_replace("0x29"," ",$mensaje);
$mensaje = str_replace("& amp ","&",$mensaje);
return $mensaje;
}

foreach($HTTP_POST_VARS as $i => $value){$HTTP_POST_VARS[$i]=limpiarez($HTTP_POST_VARS[$i]);}
foreach($HTTP_GET_VARS as $i => $value){$HTTP_GET_VARS[$i]=limpiarez($HTTP_GET_VARS[$i]);}
foreach($_POST as $i => $value){$_POST[$i]=limpiarez($_POST[$i]);}
foreach($_GET as $i => $value){$_GET[$i]=limpiarez($_GET[$i]);}
foreach($_COOKIE as $i => $value){$_COOKIE[$i]=limpiarez($_COOKIE[$i]);}


foreach($HTTP_POST_VARS as $i => $value){$HTTP_POST_VARS[$i]=stripslashes($HTTP_POST_VARS[$i]);}
foreach($HTTP_GET_VARS as $i => $value){$HTTP_GET_VARS[$i]=stripslashes($HTTP_GET_VARS[$i]);}
foreach($_POST as $i => $value){$_POST[$i]=stripslashes($_POST[$i]);}
foreach($_GET as $i => $value){$_GET[$i]=stripslashes($_GET[$i]);}
foreach($_COOKIE as $i => $value){$_COOKIE[$i]=stripslashes($_COOKIE[$i]);}

################## Фильтрация всех POST и GET #######################################
function filter_sf(&$sf_array) 
{ 
while (list ($X,$D) = each ($sf_array)): 
$sf_array[$X] = limpiarez(mysql_escape_string(strip_tags(htmlspecialchars($D))));
endwhile;
} 
filter_sf($_GET);
filter_sf($_POST); 
#####################################################################################

function anti_sql() 
{
$check = html_entity_decode( urldecode( $_SERVER['REQUEST_URI'] ) );
$check = str_replace( "", "/", $check );

$check = mysql_real_escape_string($str);
$check = trim($str); 
$check = array("AND","UNION","SELECT","WHERE","INSERT","UPDATE","DELETE","OUTFILE","FROM","OR","SHUTDOWN","CHANGE","MODIFY","RENAME","RELOAD","ALTER","GRANT","DROP","CONCAT","cmd","exec");
$check = str_replace($check,"",$str);


if( $check ) 
{
if((strpos($check, '<')!==false) || (strpos($check, '>')!==false) || (strpos($check, '"')!==false) || (strpos($check,"'")!==false) || (strpos($check, '*')!==false) || (strpos($check, '(')!==false) || (strpos($check, ')')!==false) || (strpos($check, ' ')!==false) || (strpos($check, ' ')!==false) || (strpos($check, ' ')!==false) ) 
{
$prover = true;
}

if((strpos($check, 'src')!==false) || (strpos($check, 'img')!==false) || (strpos($check, 'OR')!==false) || (strpos($check, 'Image')!==false) || (strpos($check, 'script')!==false) || (strpos($check, 'jаvascript')!==false) || (strpos($check, 'language')!==false) || (strpos($check, 'document')!==false) || (strpos($check, 'cookie')!==false) || (strpos($check, 'gif')!==false) || (strpos($check, 'png')!==false) || (strpos($check, 'jpg')!==false) || (strpos($check, 'js')!==false) ) 
{
$prover = true;
}

}

if (isset($prover))
{
die( "Попытка атаки на сайт или введены запрещённые символы!" );
return false;
exit;
}
}
anti_sql();

}


Вот в принципе и все. Удачных вам заработков.

 


!!!ВНИМАНИЕ!!! Данный материал предоставлен сайтом f-ferma.ru исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое!"
Опубликовал admin
Похожие публикации
Как правильно выбрать хостинг
Общее что такое и зачем SSL-сертификата,как выбрать хост,как не обложаться в хайпе и нормально вложить.
Faq по скрипту (Fruit Farm)
Для того , чтобы установить ферму нам нужно загрузить все файлы на сервер. Самый удобный способ загрузить архив фермы, а потом его распаковать в корневой каталог сайта.
Защита пользователей в скрипте фруктовой фермы
Вечер добрый всем фермерам и тем кто собирается пополнить наши ряды. Сегодня прогуляемся ещё по одной теме защиты в скрипте фруктовой фермы А точнее о защите пользователей. На мой взгляд, чтоб было меньше проблем нужно позаботится о том, чтобы пользовательские данные были защищены.
Защита админки в скрипте фруктовой фермы
Сегодня начинаю публиковать небольшой раздел в 5-6 тем про защиту скрипта ff. Многие фермеры сталкиваются в первую очередь с проблемой безопасности в скриптах фруктовых ферм. Меня взломали, зашли в админку. А все почему потому, что нужно сразу прикрывать все дыры. Ну и сегодня мы поговорим о том, как защитить админку в скрипте фруктовой фермы.
Комментарии
Lexa
Lexa3 октября 2016 03:03
После установки этой защиты некоторые разделы не работают, что делать???
Добавить комментарий
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Топ Комментарии Архив
soroca пишет:
tihiy,Увы,нет сервера на тет данного скрипта.Рекомендуется сервер для работы.
Александр
tihiy пишет:
Как это исправить ??? Sorry, the page you are looking for could not be
lamer пишет:
Большое спасибо Sorosa
lamer пишет:
Спасибо, побольше такого контента надо.
Всего на сайте: 7
Пользователей: 0
Гостей: 7