jQuery插件中提供回调函数是否存在XSS攻击安全风险?
这款jQuery插件是否存在XSS安全风险?
我使用一款热门jQuery插件已有多年,近期学习网络安全知识(我并非专家,但希望写出更优质代码)时,意识到这款插件及其他诸多插件可能存在XSS攻击漏洞。能否帮我判断该插件是否安全?
以下是简化后的插件代码(暂不提及插件名称):
(function ($, document, window){ var defaults = { callback: false, // more options }; publicMethod = $.fn.pluginName = function (options, callback) { options = options || {}; var settings = $.extend(true, {}, defaults, options); // event listener. trigger('pluginName.launch'); // callback function. $.isFunction(settings.callback){ settings.callback.call(); } // more stuff }; }; }(jQuery, document, window));
你可以像这样调用插件,传入包含任意代码的回调函数:
$.pluginName({ option1: value1, callback: function(){ $('#someDIV').html('<script>...</script>'); $('body').append($('<script />...')); eval();// Do eval things...? } });
此外,你还可以为事件监听器添加自定义代码:
$(document).on('pluginName.launch', function(){ eval();// More eval stuff? });
由于用户输入的JS未经过sanitize(净化),这是否会构成安全问题?
我已通过Chrome控制台利用事件监听器执行.call()及任意自定义代码,这看起来存在风险:
var test = function(){ alert('foo'); //eval();.... } $(document).on('pluginName.launch', function(){ test.call(); });
内容的提问来源于stack exchange,提问作者Must Impress
相关产品推荐
相关产品推荐

