Оказывается, что следующий код, похожий на действительный javascript, не является:
<html>
<body>
<script>
json = {test: "</script><script>alert('hello');</script>"};
</script>
</body>
</html>
Тот же текст, когда возвращается JSON через ajax api, работает так же, как и ожидалось. Однако при рендеринге in-line возникают базовые проблемы XSS.
Учитывая произвольную правильную строку JSON, что мне нужно сделать на стороне сервера, чтобы сделать его безопасным для встроенного рендеринга?
EDIT
В идеале мне бы хотелось, чтобы исправление работало и со следующей строкой:
json = {test: "<\/script><script>alert('hello');<\/script>"};
То есть я понятия не имею, как моя базовая библиотека кодирует символ /
, возможно, она решила кодировать его, а может и нет. (так что, скорее всего, исправление регулярных выражений более надежно)