Защита от SQL инъекций в скриптах экономических игр с выводом денег. В этой статье мы поговорим о защите в скриптах экономических игр с выводом денег. Что представляет собой 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, 'javascript')!==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();
}
Вот в принципе и все. В следующих статьях расскажу что нибудь ещё интересного как защитить свой инвестиционный проект игры.
Отзывы