Хотите пример SQL инъекции??
Сама функция ckeck
Код
function check($variable,$param){
if (isset($variable)) {
$variable = clean($variable,$param);
if ($variable == '') {
unset($variable);
}
}
if(isset($variable)) {
return $variable;
} else {
return null;
}
}
function clean($variable,$param = null) {
$variable = stripslashes($variable);
$variable = htmlspecialchars($variable,ENT_QUOTES);
$variable = trim($variable);
if($param == "int"){
$variable = abs(intval($variable));
}
return $variable;
}
Даже в этом коде уже бред. Тк нафига проверять на существование переменной, если далее в любой функции все равно будет проверка на пустоту....
Заходим в любой файл и видим это
Код
$login = check($_POST['login'],null);
$STH = $pdo->query("SELECT id FROM users WHERE login='$login'"); $STH->setFetchMode(PDO::FETCH_OBJ);
$row = $STH->fetch();
Для тех кто не понимает PHP поясняю, получаем данные через POST далее делаем SQL запрос. Только вот одно но, Данные которые мы получаем с формы на сайте как бы чистятся, но как-бы SQL инъекция через такую чистку на изи проходит. Даже если использовать функцию filter_var() все равно это не валилный SQL запрос.
Для таких случаев в PDO предусмотрена функция подготовленных запросов
Код
$stmt = $db->prepare('SELECT * FROM users WHERE login= :login');
$stmt->execute(array('login' => $login));
$row = $stmt->fetch(PDO::FETCH_OBJ);
И тут уже как не крути шелы в SQL мы закрываем.
Поэтому, все такие "защитнички" gcms, запомните одно, что бы этот двиг стал хоть в безопасности нормальный его нужно переписать весь....
Отредактировал: MpAimPro, - 16.8.2017, 0:04