小编aAX*_*XEe的帖子

从 URL 显示由 decodeURIComponent 解码的 HTML 代码是否安全?

一般的

我不确定以这种方式显示用户输入的一些文本是否安全:

来自 URL 的参数由decodeURIComponent(). 之后,换行符使用 替换text.replace(/\n/g, '<br/>')
结果字符串显示在 OpenLayers 标记中。

通过这种方式,来自用户的 HTML 被嵌入到网页中。

具体例子

http://map.openseamap.org允许创建永久链接(顶部菜单 > 工具 > 永久链接)
该站点解码如上所示的 URL 并在页面上显示一个标记。

示例:http :
//map.openseamap.org/map/?zoom=15&​​mlat=53.62053&mlon=11.46929&mtext=%3Cscript%3E%0A%20alert(%27Hello%20World!%27)%3B%0A%3C%2Fscript %3E&layers=BTFFFFFFFFF0FFFFFFFF

包含:

<script>
    alert('Hello World!');
</script>
Run Code Online (Sandbox Code Playgroud)

代码嵌入在页面中,但不会执行。

这种显示文本的方式可以被利用吗?

你可以在这里找到该站点的代码:http :
//github.com/OpenSeaMap/online_chart

解码代码在 index.php 第 138 行:http :
//github.com/OpenSeaMap/online_chart/blob/master/index.php#L137

如果您有更好的解决方案,欢迎提出请求!

html javascript security xss openlayers

4
推荐指数
1
解决办法
2777
查看次数

标签 统计

html ×1

javascript ×1

openlayers ×1

security ×1

xss ×1