2016-12-19 3 views
0

У нас есть OpenCart 2.3, размещенный в Amazon Web Services. Мы предприняли шаги для защиты от XSS, т. Е. Мы активировали защиту XSS при настройке AWS. В Google Chrome, вы увидите наш заголовок:Как добавить защиту XSS в мой интернет-магазин OpenCart 2.3

X-XSS-Protection:1; mode=block 

Один тест, который я сделал, чтобы ввести следующее на кассе комментарий:

<html> 
<script>Alert('hello world')</script> 
</html> 

На кассе не отображается никакой бдительный, то есть сценарий сделал не выполнять? Я проверил базу данных и увидел, что теги были закодированы, например, хранится как <html> Это должно означать, что наш сайт защищен от XSS?

Какие шаги мы можем предпринять, чтобы полностью защитить от XSS

ответ

1

Заголовок X-XSS-Protection не делать то, что вы думаете, что он делает. См. What is the http-header "X-XSS-Protection" для приятного обзора. Но tl; dr - это то, что он позволяет некоторое поведение на IE8 +.


Говоря более широко, XSS, по его природе, не то, что вы можете защитить против с одним действием. Каждый раз, когда вы берете на себя какой-то пользовательский ввод, вы должны быть особенно осторожны, чтобы подтвердить, что он соответствует формату, в котором вы хотите его видеть. Всякий раз, когда вы представляете этот ввод пользователю, вы должны правильно его обрабатывать, чтобы вредоносный скрипт не выполняется в контексте этого пользователя и делает bad вещами.

OWASP имеет приятный XSS prevention cheatsheet, который является очень приятным ресурсом.

Но, в принципе, всегда избегайте вводимого пользователем ввода в соответствии с областью, в которой он будет отображаться. Если, например, пользователь предоставил некоторый текст для заголовка элемента покупки, то это должно быть только текст и используется в элементе HTML, который ожидает только текст (например, один из элементов), и с экранированным HTML и т. д. С другой стороны, если пользователь предоставил URL-адрес, это должно использоваться в контексте, где URL-адрес действителен (например, источник изображения) и URL-экранирование. Не позволяйте пользователям предоставлять свои собственные HTML, CSS или скрипты. И не ставить пользователем значения в скриптах, CSS и т.д.


Наконец, так как вы используете OpenCart, вы выгоду от нагрузок работы других людей уже сделали. Итак, если вы не делаете что-то необычное и не играете с внутренними битами фреймворка, вы, вероятно, не столкнетесь с глубокими водами. Разумеется, следуйте за конвенциями внутри рамки.

Смежные вопросы