2016-03-21 2 views
-6

Один из моих сайтов недавно и постоянно (постоянно), под атакой. Скрипт JavaScript как-то вставляется в базу данных MySQL.JavaScript MySQL предотвращение инъекций

Я использую следующие:

$unsafe_variable = addslashes(htmlspecialchars(strip_tags(mysql_real_escape_string($_POST['user_input'])))); 

mysql_query("INSERT INTO `table` (`column`) VALUES ('$unsafe_variable')"); 

Однако хакер все еще в состоянии вставить «сценарий» тег. Я понятия не имею, как это сделать. У меня есть фильтр слов и занесено в черный список слово «скрипт», которое блокируется при отправке теста на сайт. Как он/она может это пройти?

enter image description here

Выше скриншот записи в базу данных. У кого-нибудь есть идеи о том, как я могу это предотвратить?

+0

Все четыре функции не являются «механизмами защиты». Они конвертируют данные. Как эти данные попадают в вашу базу данных. Пожалуйста, напишите * этот * код вместо этого, чтобы мы могли помочь. –

+0

Здесь действительно недостаточно информации. Как применяются указанные вами функции и в каком порядке? Это возможно, если они находятся в неправильном порядке, тогда ваша защита будет побеждена. – Chris

+5

Не устанавливайте * вход *. Исправьте * выход *. Используйте «htmlspecialchars», где это поле отображается вашим пользователям. – ceejayoz

ответ

3

Для начала JavaScript это код, который пользователь может реально изменить с помощью DOM инструментов (например, инспектировать элемент) и должен никогда использоваться в качестве механизма для обеспечения безопасности с базами данных.

Прежде всего, вы должны начать исследование о инструкциях подготовки в PDO, если вы используете недопустимый ввод пользователя; параметр привязки в интерфейсе PDO автоматически вытесняет содержимое HTML из ввода.

Вы также можете посмотреть функцию preg_replace внутри PHP. Это можно использовать для создания более уникальных и точечных полос и позволяет использовать такие функции, как BB Code.

Существует много ресурсов для переполнения стека, которые охватывают проблемы безопасности, возникающие в этом вопросе, и, безусловно, устраняют атаку каждого уровня.

Source 1
Source 2

Также обратите внимание, что атака вы указываете это XSS атака используется, чтобы внедрить вредоносный код JavaScript. Если вы хотите разрешить этот код, никогда не вставляйте его прямо на глобальную страницу (т. Е. Комментарии, которые могут видеть несколько пользователей). Только разрешить одиночному пользователю просматривать введенный код. В противном случае просмотрите приведенные выше источники для получения дополнительной информации.

+0

Вы должны упомянуть ['htmlspecialchars'] (http://php.net/manual/en/function.htmlspecialchars.php), который используется для выхода из пользовательского содержимого для отображения HTML. Он должен использоваться везде ** любые ** пользовательские данные отображаются. – tadman

+0

Во что бы то ни стало отредактировать его, если вы думаете, что его нужно добавить, я бы надеялся, что в них источники содержат такую ​​информацию. Хорошее дополнение однако @tadman – KDOT