Discuz!7.X严格限制引用的Flash地址解决方案
经过测试Flash引用时存在过滤不严格的BUG,现给出以下修正方案:<br /><br /> 1、找到include\discuzcode.func.php文件<br /> 2、在discuzcode函数中查找<ol><li> if($allowmediacode && strpos($msglower, '') !== FALSE) {<br /><li> $message = preg_replace("/\\s*([^\[\<\r\n]+?)\s*\[\/flash\]/is", "<script type="text/javascript" reload="1">document.write(AC_FL_RunContent('width', '550', 'height', '400', 'allowNetworking', 'internal', 'allowScriptAccess', 'never', 'src', '\\1', 'quality', 'high', 'bgcolor', '#ffffff', 'wmode', 'transparent', 'allowfullscreen', 'true'));</script>", $message);<br /><li> }</ol>换行成<ol><li> if($allowmediacode && strpos($msglower, '') !== FALSE) {<br /><li> $message = preg_replace("/\\s*([^\[\<\r\n]+?)\s*\[\/flash\]/ies", "parseflash('\\1')", $message);<br /><li> }</ol><br />3、在该文件中增加以下函数代码<ol><li>function parseflash($url) {<br /><li> preg_match("/((https?){1}:\/\/|www\.)[^\["']+/i", $url, $matches);<br /><li> $url = $matches;<br /><li> $code = '';<br /><li> if($url) {<br /><li> $code = "<script type="text/javascript" reload="1">document.write(AC_FL_RunContent('width', '550', 'height', '400', 'allowNetworking', 'internal', 'allowScriptAccess', 'never', 'src', '$url', 'quality', 'high', 'bgcolor', '#ffffff', 'wmode', 'transparent', 'allowfullscreen', 'true'));</script>";<br /><li> }<br /><li> return $code;<br /><li>}</ol>修正后可以有效地限制引用的Flash地址<br /><br />+======================================+<br />感谢“360第三方漏洞收集平台(http://webscan.360.cn/)”为本次修正提出安全建议<br />+======================================+<br /><br /><br />Flash<em>, </em>修正<em>, </em>严格<em>, </em>限制<em>, </em>用的 支持 辛苦了 只是7.X吗 这个可以。 感谢分享 感谢分享 感谢分享 顶一个!感谢楼主的分享,这个Flash引用的安全问题确实很重要,之前看到过一些利用Flash地址进行挂马或者XSS攻击的案例,Discuz默认的过滤确实有些不够严格。按照楼主的方案修改后,通过正则表达式来严格匹配URL格式,应该能有效阻止一些恶意代码的注入。特别是设置allowScriptAccess为never这一点,很好地限制了Flash的脚本执行权限。
另外也感谢360安全团队提供的建议,现在越来越多的开源程序都在关注安全问题,这对我们这些站长来说是好事。
mark一下备用,回头有空在自己的站点上也测试一下这个方案。支持技术分享!圆梦公社就需要这样热心的会员来充实内容。点击访问圆梦公社
頁:
[1]