js在图像标题中使用fancybox画廊

问题描述:

我使用fancybox(lightbox像js弹出库)来显示照片,它的标题在弹出。用户使用提供的标题上传照片。在html中显示照片时,我也逃过了照片标题。 HTML标签是简单的:js在图像标题中使用fancybox画廊

<a href="/files/909221123.large.JPG" title="sample image &lt;script&gt;alert('test')&lt;/script&gt;"><img src="/files/909221123.medium.JPG"></a>

正如你可以看到,在标题中的JS标签逃脱。然而,当它显示在fancybox弹出窗口中时,它会无所谓地运行 - 我点击提示js警报弹出窗口然后用照片弹出fancybox弹出窗口的照片。

这确实是一个XSS问题,但我认为它是如此明显,fancybox不应该有第一个这样的问题。我在这里做错了什么?以及如何解决它?

谢谢。

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标记与正则表达式。

+0

宁可不直接破解插件.. 并不确定如果我可以编写一个100%安全的正则表达式作为逃脱的html也运行良好。 – perlwle 2011-06-15 05:33:04

+0

和应该逃脱HTML标记呈现在HTML ??? – perlwle 2011-06-15 05:37:47

+0

@perlwle我会进行更新。返回语句'title'中的 – alex 2011-06-15 05:43:39