渲染用户创建的Django模板是否安全?
让用户使用一组预定义的变量制作自己的Django模板,然后在服务器上渲染这个模板是否安全?我只会传递一组非常有限的参数来渲染,所有参数都是字符串.模板将是这样的:
hey,my name is {{name}}. 所以,问题是,是否有任何django模板标签可以被滥用来获取用户不应该得到的信息?我最担心的是{%url%}标签. 附: 在填写标题后我注意到this question,但是,我的问题略有不同.我可能根本不允许使用HTML / javascript,使用Textile / Markdown,或者找到一种方法将HTML限制为一组非常基本的标签. 解决方法
有三个主要风险:
>用户修改数据.例如,渲染{{request.user.kill}}将在值查找期间触发kill()调用.要防止这种情况,您应该在模型代码中设置kill.alters_data = True.所有修改数据的内置模型方法都已标记,因此风险仅与您自己的方法或由写得不好的第三方应用程序提供的方法相关联. 总的来说,只要您了解上述风险并将用户提供的字符串与常规模板分开呈现,我就会说它是安全的.并确保您明确禁止{%debug%},{%include%}. {%ssi%}模板标签,因为它们可以泄露相当敏感的信息.也许你可以安全地玩,只允许变量和过滤器,并完全禁止控制标签. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |