Loading...
PHP/MySQL | норм защита от sql inj или не
Вилы Выкидные (22 июня 2024, в 9:03)
неправильное применение фильтров, ты не проверяешь данные, ты из очищаешь и зачем-то приводишь к другому типу

базе данных похер такие очистки в БД всё залетает в виде СТРОК

очищать нужно при выводе в браузер и то на любителя, если не хочешь XSS чтобы балдели на страницах, XSS не выполняется в БД, строка хранится в том же виде
Так тут речь о sql inj, а не о xss
Kira Schwarz ,
норм защита строк от скл иньекций mysql на php 5.6 или неочень, не сильно шарю в безопасности...

еще такйо вариант есть, но хз в чем разница:

function jopa($str) {
$str = mysql_real_escape_string($str);
return $str;
}

mysql_real_escape_string() считается устаревшей в 5.6 так что использовать её не целесообразно
<?php

function filter($data) {

$explode = explode("|", $data);

if (count($explode) != 3) {
return null;
}

$method = $explode[0];
$name = $explode[1];
$type = $explode[2];

$array_method = [
"get" => INPUT_GET,
"post" => INPUT_POST,
];

$array_type = [
"int" => FILTER_VALIDATE_INT,
"str" => FILTER_SANITIZE_SPECIAL_CHARS,
];

if (array_key_exists($method, $array_method) && array_key_exists($type, $array_type)) {
$filter_input = filter_input($array_method[$method], $name, $array_type[$type]);
if ($filter_input !== false) {
return $filter_input;
}
}

return null;
}

function xss_protection($data) {
return htmlspecialchars($data, ENT_QUOTES, mb_internal_encoding());
}

$login = filter("post|login|str");
$password = filter("post|password|str");

echo xss_protection("<script>alert();</script>");


Код написал по памяти без тестирования, но по идее должен работать. Первую функцию я придумал, а вторую не помню, где видел — вроде на каком-то фреймворке.
________
посл. ред. 06.09.2025 в 12:38; всего 2 раз(а); by STUDIO
https://www.php.net/manual/ru/book.pdo.php
Онлайн: 1
Время:
Gen. 0.0773
(c) ByMAS.RU 2010-2025