Класс для защиты от sql инъекций (Рейтинг: +3)

Печать / RSS
Может кому-то пригодится
Файл 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();
#####################################

я меня стоит сразу после подключения к бд krut.gif
Автор: COMANDOS (20.01.11 / 17:29)
защита от sql-инъекций, безопастность
Рейтинг: +3
Просмотры: 1371
Комментарии (6) »