2020Web前端面试题如何预防XSS

问题:如何预防XSS?

Web前端面试题

解析:XSS攻击有两大要素:

1.攻击者提交恶意代码。

2.浏览器执行恶意代码。

针对第个要素:我们是否能够在用户输入的过程,过滤掉用户输入的恶意代码呢?

输入过滤

在用户提交时,由前端过滤输,然后提交到后端。这样做是否可行呢?

答案是不可行。旦攻击者绕过前端过滤,直接构造请求,就可以提交恶意代码了。

那么,换个过滤时机:后端在写数据库前,对输进行过滤,然后把“安全的”内容,返回给前端。这样是否可行呢?

我们举个例,个正常的用户输入了57这个内容,在写入数据库前,被转义,变成了57。问题是:在提交阶段,我们并不确定内容要输出到哪。

这的“并不确定内容要输出到哪”有两层含义:

1.用户的输入内容可能同时提供给前端和客户端,而旦经过了escapeHTML(),客户端显示的内容就变成了乱码(57)。

2.在前端中,不同的位置所需的编码也不同。

当57作为HTML拼接页面时,可以正常显示:

divtitle=


转载请注明:http://www.aierlanlan.com/cyrz/5551.html