У меня есть текстовое поле и кнопка отправки, в которой размещается контент и ответ на HTML-страницу. Есть ли какой-либо способ (кроме проверки, если строковая подстрока в начале
<h1>,<h2>,<h3>...,<script>,<style>,etc.
чтобы увидеть, будет ли строка форматироваться по-разному, когда она будет размещена на странице, чтобы предотвратить инъекцию кода?
благодаря
-Zach
Когда вы показываете пользовательские данные, вы должны правильно закодировать его как html. В javascript используйте document.createTextNode(userData)
и добавьте этот узел вместо использования innerHTML. В PHP используйте htmlentities
.
Если пользователю разрешено использовать любой html или форматирование, вы должны сделать их со строгим списком разрешенных тегов и атрибутов и закодировать все остальное как обычный текст.
Таким образом, даже если пользователь ввел <h1>stuff</h1>
, когда он правильно закодирован, он выйдет как <h1>test</h1>
вместо html, который не будет уязвим для javascript-инъекции.