Javascript和CSP-最佳实践
我想对我的web应用程序使用内容站点保护。简而言之,如果您还没有听说过,它将允许我禁用web应用程序中的任何嵌入式javascript,帮助防止XSS 结果是,我的所有javascript代码都必须在外部文件中 大多数javascript“库/框架”代码已经存在,但通常我的页面将包含至少几行JS代码,实例化与特定页面相关的组件 例如,我有一个假设的注册页面。在注册页面的底部,我有以下代码:Javascript和CSP-最佳实践,javascript,jquery,content-security-policy,Javascript,Jquery,Content Security Policy,我想对我的web应用程序使用内容站点保护。简而言之,如果您还没有听说过,它将允许我禁用web应用程序中的任何嵌入式javascript,帮助防止XSS 结果是,我的所有javascript代码都必须在外部文件中 大多数javascript“库/框架”代码已经存在,但通常我的页面将包含至少几行JS代码,实例化与特定页面相关的组件 例如,我有一个假设的注册页面。在注册页面的底部,我有以下代码: var registrationForm = new MyApp.registrationValidato
var registrationForm = new MyApp.registrationValidator($('.regform'));
registrationForm.init();
此假设代码获取对注册表的引用,并可以注册所有验证代码
现在我必须将此代码移到一个外部文件中。我可以:
选项A:为每个页面创建一个小的.js文件,该文件只执行特定于该页面的代码
- 优点-简单且相对快速
- 缺点-这对于每个页面都是一个额外的js文件,我更希望能够将所有javascript最小化为一个文件,以减少请求
- Pros-实例化的单一位置。如果页面上的组件具有正确的css类,那么它们将神奇地开始工作
- 缺点-如果我的应用程序增长了很多,那么对于一个特定的页面,将会有很多不需要的初始化代码
标记一个id或类,并根据一个大开关执行正确的代码
- 优点:仍然可以压缩为一个.js文件,我不需要每页都有一个.js文件
- 缺点:我想我觉得这有点难看
我主要想知道的是,您对这种情况有经验吗?您是如何解决的?如果您愿意使用像jQuery这样的框架(动态加载和执行外部javascript),您可以结合使用a和B的优点。每个页面都将加载相同的.js,它决定(通过是否存在dom元素)动态加载哪些其他.js文件。选项D(A和B的变体):看看将多个javascript源文件编译(并缩小)为一个的部署系统,只考虑该页面所需的文件
对于PHP,就是这样一个系统。我们使用的是jQuery和主干。我试图在选项B中暗示这一点,但感谢您更好地描述了我的意思:)如果您想摆脱客户端的初始化代码,可以让php/asp/jsp确定要附加到html输出的.js。对于php,我确信您可以进行dom xml遍历。谢谢!这是一个很好的建议,也是一个很好的项目。虽然我觉得我希望最终能够给用户一个大的js包,而不是大多数页面的新下载。