我不确定以这种方式显示用户输入的一些文本是否安全:
来自 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
如果您有更好的解决方案,欢迎提出请求!