Класс для защиты от sql инъекций
Может кому-то пригодится
Файл sql.php
<?php
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');
function InitVars() {
}
# Метод конвентирует суперглобальные массивы $_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));
}
}
# Метод проверяет $_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>");
}
}
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>");
}
}
}
function antihack($msg) {
echo '<font color="red"><b>АХТУНГ: </b></font>'.$msg.'<br>\n';
die;
}
}
?>
ну и
использование в удобном для вас месте этот код
#####################################
include('путь/sql.php');
$stop_injection = new InitVars();
$stop_injection->checkVars();
#####################################
я меня стоит сразу после подключения к бд
URL:
https://visavi.net/articles/205