我正在使用fancybox(像js popup库这样的灯箱)在弹出窗口中显示照片及其标题。用户使用提供的标题上传照片。当我用html显示照片时,我也逃过了照片标题。 html标签很简单:
<a href="/files/909221123.large.JPG" title="sample image <script>alert('test')</script>"><img src="/files/909221123.medium.JPG"></a>
如您所见,标题中的js标签已转义。但是,它在fancybox弹出窗口中显示时无论如何都会运行 - 我单击提示js警告弹出窗口的照片,然后单击带有照片的fancybox弹出窗口。
这肯定是一个XSS问题,但我认为它是如此明显,并且fancybox不应该首先出现这种问题。我在这里做错了吗?以及如何解决它?
感谢。
答案 0 :(得分:0)
听起来像Fancybox将该字符串视为HTML而不是文本。
你可以破解这个插件。有代码处理标题,如...
return '<table id="fancybox-title-float-wrap" cellpadding="0" cellspacing="0"><tr><td id="fancybox-title-float-left"></td><td id="fancybox-title-float-main">' + title + '</td><td id="fancybox-title-float-right"></td></tr></table>'
正如您所看到的那样,当title
存在时,它已经解析了它的实体。
否则,您可以使用正则表达式删除看起来像 HTML标记的字符串部分。