Защищен ли мой сайт от XSS, если я заменю все «<» на «<»? - PullRequest
5 голосов
/ 02 декабря 2010

Мне интересно, каков минимальный уровень безопасности сайта от XSS .

Если я просто заменю < на &lt; во всем пользовательском контенте, будет ли мой сайт в безопасности от XSS ?

Ответы [ 5 ]

5 голосов
/ 02 декабря 2010

Зависит от контекста.

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

  • <
  • >
  • "
  • '
  • &

Для тривиального примера, когда кодирование меньшего, чем не имеет значения, является чем-то вроде этого ...

Добро пожаловать на хитрый сайт.Пожалуйста, дайте ссылку на вашу домашнюю страницу.

Злоумышленник входит ...

http://www.example.com" onclick="window.location = 'http://nasty.com'; return false;

Который, очевидно, становится ...

<a href="http://www.example.com" onclick="window.location = 'http://nasty.com'; return false;">View user's website</a>

Если вы закодировали двойные кавычки, эта атака не будет действительной.

2 голосов
/ 05 декабря 2010

В зависимости от используемой вами структуры, многие теперь имеют модуль проверки ввода.Когда я читаю лекции, я говорю студентам-программистам: ИСПОЛЬЗУЙТЕ ВХОДНЫЕ МОДУЛИ ВАЛИДАЦИИ, КОТОРЫЕ УЖЕ СУЩЕСТВУЮТ!

изобретать колесо часто менее эффективно, чем использовать уже испытанные и проверенные модули, которые уже существуют.,.Net содержит большую часть того, что вам может понадобиться - действительно простой белый список (где вы знаете только разрешенный ввод) или черный список (немного менее эффективный, так как известные «плохие» вещи всегда меняются, но все еще полезны)

2 голосов
/ 02 декабря 2010

В некоторых случаях кодирование страницы имеет значение.То есть - если ваш набор символов страницы не правильный или не совпадает во всех применимых местах, то существуют потенциальные уязвимости.Подробнее см. http://openmya.hacker.jp/hasegawa/security/utf7cs.html.

2 голосов
/ 02 декабря 2010

Нет. Вы должны избегать любого пользовательского ввода, независимо от того, что оно содержит.

0 голосов
/ 02 декабря 2010

Если вы избежите ввода пользователя, вы должны быть в безопасности.

Это значит ВСЕ ВЕЗДЕ, где оно появляется. Даже имя пользователя в профиле.

...