无法正确逃脱JSON模板的内联JS



这是我JSON模板的一部分的摘要

"output" : "...
            <a data-bind="attr: { href: '/click?url=' + 
            encodeURIComponent(imageLnk())
            .replace(/'/g,"%27")
            .replace(/"/g,"%22"), 
            onclick: 'return sl(this,\'nw\',\'' + $root.moduleId() + '_i' + 
            $data.index() + '-1\');' }">
                <img data-bind="attr: { src: imageSrc, alt: imageAlt }">
            </a>
            ..."

忽略我的空间。我添加了它以使其可读性。

我的问题是在.replace(/'/g,"%27").replace(/"/g,"%22")部分中逃脱了引号('")。有什么想法吗?

,因为没有人能穿过我的JSON(谁能诚实地责怪任何人不想?),我决定通过附加一个来解决我的问题我的模型称为encodeLink的功能,该功能只需返回上方发布的内联敲除JS即可。但是,我仍然很想知道应该如何正确逃脱上述代码(如果可能的话)!

我倾向于创建一个自定义绑定处理程序(例如" url"),并将所有逃逸代码放入其中。现在,您的视野中有太多的逻辑;除其他外,如果您必须在实施某些内容安全策略的环境中运行(您可能必须使用诸如Secure Bindings插件之类的内容,这将咬您,这可能在绑定中不允许函数调用)。

最新更新