如果服务器端脚本生成以下输出:
<script>
var a = 'text1';
var b = 'text2';
var c = 'text3';
</script>
,并且值(在本例中为“text1”、“text2”和“text3”)是用户提供的(通过 HTTP GET/POST),是否足以从输入中删除 < 和 > 并替换
'
和
' + "'" + '
为了免受 XSS 攻击?(这是我的主要问题)
我特别担心反斜杠没有被转义,因为攻击者可以逃脱尾随的 '. 在这种情况下,这可能是一个潜在的问题吗?如果变量赋值没有用换行符分隔,攻击者可以提供值
text1
text2\
;alert(1);//
并最终得到有效的 JS 代码,例如
<script>
var a = 'text1'; var b = 'text2\'; var c = ';alert(1);//text3';
</script>
但是因为有换行符也不应该是一个问题。我还缺少其他东西吗?