[php] Защита от Sql и XSS

Здравствуйте, посоветуйте функцию или класс для проверки и обработки входящих данных для защиты от уязвимости (фреймворки не использую).
  • Вопрос задан
  • 17310 просмотров
Решения вопроса 1
@NiGP
Сорри нажал на enter
http://www.php.net/manual/en/book.pdo.php
а точнее ознакомьтесь с
bindParam

от XSS есть не мало функции
strip_tags() – вырезает теги HTML и PHP из строки.

htmlspecialchars() — конвертирует только специальные символы (‘&’, ‘»‘, »’, ‘<’ и ‘>’) в HTML сущности (‘&’, ‘"’…). Используется для фильтрации вводимых пользователем данных для защиты от XSS-атак.

htmlentities() – конвертирует все символы в строке (кроме букв) в мнемоники HTML. Используется для защиты от XSS, являясь более гибким аналогом htmlspecialchars.

stripslashes() – удаляет заэкранированные символы (после преобразования в сущности предыдущими функциями их незачем экранировать)
Ответ написан
Пригласить эксперта
Ответы на вопрос 7
@gro
Что бы защищаться от SQL и XSS-инъекций требуется на минимальном уровне понимать что это вообще такое и как это работает.
Тогда не будет ни инъекций, ни подобных бессмысленный вопросов, ни подобных бессмысленных ответов.
Ответ написан
xel
@xel
front end developer
для SQL рекомедую использовать mysqli, в нем тип данных указываешь при подготовке запроса
от XSS экранируй htmlspecialchars() и используй везде в html двойные кавычки — это и по стандарту и безопасно (можно экранировать конечно с ENT_QUOTES, но это лишний головняк.
Ответ написан
@NiGP
С SQL inj довольно не плохо справляется PDO
более подробно в доках
Ответ написан
@Ura78
и функция обработки входящих данных от Raz0r тык
Ответ написан
Я всегда делал так, от sql атак.

// Функция экранирования переменных
function quote_smart($value)
{
    // если magic_quotes_gpc включена - используем stripslashes
    if (get_magic_quotes_gpc()) {
        $value = stripslashes($value);
    }
    // Если переменная - число, то экранировать её не нужно
    // если нет - то окружем её кавычками, и экранируем
    if (!is_numeric($value)) {
        $value = mysql_real_escape_string($value);
    }
    return $value;
}


$info = $Database->prepare("SELECT money FROM users WHERE text = '".quote_smart($_POST["text"])."'");



Запрос, составленный таким образом, будет выполнен без ошибок, и взлом с помощью SQL Injection окажется невозможен.

Не верите мне читайте тут http://www.php.ru/manual/function.mysql-real-escape-string.html
Ответ написан
@Ura78
Решение на уровне модуля Апача ModSecurity
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы