我正在使用fancybox(如js弹出库一样的光照盒)来显示照片,并在弹出窗口中显示它的标题。照片由用户上传并提供标题。在html中显示照片时,我也逃过了图片标题。html标记很简单,如:
<a href="/files/909221123.large.JPG" title="sample image <script>alert('test')</script>"><img src="/files/909221123.medium.JPG"></a>
如您所见,title中的js标记被转义了。但是,当显示在fancybox弹出窗口中时,它会不加考虑地运行--我单击图片提示js警报弹出,然后显示带有照片的fancybox弹出。
这是一个XSS问题,但我认为这是非常明显的,而且fancybox不应该有这样的问题。我在这里做错什么了吗?以及如何修复它?
谢谢。
发布于 2011-06-15 04:19:58
听起来,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出现时,它已经解决了它的实体。
否则,您可以删除字符串的一部分,这些字符串看起来像带有regex的HTML标记。
https://stackoverflow.com/questions/6352943
复制相似问题