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

Здравствуйте, посоветуйте функцию или класс для проверки и обработки входящих данных для защиты от уязвимости (фреймворки не использую).
  • Вопрос задан
  • 18451 просмотр
Решения вопроса 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
Ответ написан
@MrGroovy
Для защиты от межсайтового скриптинг (XSS) можно воспользоваться встроенными функциями, например такими:
htmlspecialchars()
Преобразует некоторые символы в виде HTML-сущностей, чтобы сохранить их значение. Обязательно используйте ее для фильтрации данных вводимых пользователей.
Для защиты от SQL-инъекций можно использовать следующие функции:
mysql_real_escape_string()
Экранирует специальные символы, принимая во внимание кодировку соединения, таким образом, что результат можно безопасно использовать в SQL-запросе.
Еще можно защититься используя фильтрацию по "белому" списку, приведение переменных и используя подготовленные запросы.
Чтобы найти поля, которые подлежат фильтрации можете воспользоваться специальными сканерами по поиску уязвимостей, например для SQL-инъекций можете воспользоваться утилитой SQLMAP
Еще перед вами стоит более комплексный подход по защите сайта, то можно воспользоваться онлайн сканерами уязвимостей, которые могут проверить большинство уязвимостей сайта, а так-же не помешает проверить наличие уязвимостей связанных с работой прикладных протоколов. Попробуй metascan или https:// sitecheck.sucuri.net
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
18 апр. 2024, в 21:56
2000 руб./за проект
18 апр. 2024, в 21:00
150 руб./за проект