通过配置“内容安全策略”禁用eval

星期日, 12月 24, 2023 | 1分钟阅读 | 更新于 星期日, 12月 24, 2023

@
通过配置“内容安全策略”禁用eval

众所周知,eval()是JavaScript中的一个强大函数,它可以从文字字符串运行javascript代码,但出于一些不安全的原因,我们不建议使用eval()。

有很多不同的方法可以在应用程序中禁用“eval”,例如重写eval函数,或使用 eslint 检查它在开发环境中的使用情况,并给出警告提醒。

今天我将通过实施“CSP”(内容安全策略)来禁用“eval()”。

什么是“CSP”

内容安全策略 (CSP) 是附加的安全层,有助于检测和缓解某些类型的攻击,包括跨站点脚本 (XSS) 和数据注入攻击。

您可以在服务器端或前端启用“CSP”。

在服务器端,您需要配置 Web 服务器以返回 Content-Security-Policy HTTP 标头。

在前端,您需要配置一个“mata”元素:


<meta http-equiv="Content-Security-Policy" content="default-src 'self'" />

上面的“CSP”限制可用资源仅来自站点的来源。

您可以声明多个语句,并用分号分隔。 您可以在 MDN 上看到其他声明

它与 eval() 有什么关系

CSP 限制了所有可用资源的来源,而JavaScript 代码字符串也是来源的一种,因此当您限制 CSP 策略时,您同时禁止使用 eval() 执行该字符串。

当您配置“CSP”策略时,如果调用了“eval()”,您的浏览器将抛出错误并忽略它:

评估错误

注意事项

不要忘记将 script 放在 CSP 语句的 后面 或使用 async 属性。 否则你不会看到配置内容安全策略起作用

© 2016 - 2025 Jebben 开发日志&网络随笔

🌱 Powered by Hugo with theme Dream.

关于博主

自我介绍

大家好,我是 Jabin,一名拥有 8 年工作经验的前端工程师。我是一个自学成才的开发者,通过不断学习和实践,积累了丰富的 web 端开发经验以及在 B 端后台管理、监控和 C 端教育、媒体类项目方面的丰富经验。

关于我的技能

我精通多种前端技术,包括但不限于:

  • JavaScript 和 TypeScript:我熟练掌握 JavaScript 和 TypeScript,能够利用它们构建出色的前端应用程序。
  • CSS:我对 CSS 有深入的理解,能够编写出美观、响应式的样式。
  • 前端框架:我熟练使用 Angular、React、Vue 和 Next.js 等前端框架,能够根据项目需求灵活选择并应用合适的技术栈。
  • 前端工具:我熟悉 webpack、Vite 等常用的前端打包工具,以及框架配套的 CLI 工具,能够高效地进行项目开发和部署。
  • 后端技术:我了解服务端语言 Java 和 Node.js,并能够与后端开发人员紧密合作,实现完整的应用程序。
  • 数据库和操作系统:我熟悉 SQL 数据库和 Linux 操作系统的常见操作和命令,能够进行数据库管理和服务器配置。

我的项目经验

我曾主导多个从零到一的项目,参与过数百万 UV 项目的开发,具有丰富的项目开发与团队合作经验。

我对技术充满热情,喜欢钻研新技术和解决复杂的技术问题。我还积极参与开源社区,贡献自己的力量,与各地的开发者共同探索和分享技术前沿。

结语

我是一个对技术认真负责、可靠可靠的人,热爱挑战和创新。我希望通过我的个人网站,与更多志同道合的人分享我的经验和见解,共同推动前端技术的发展和进步。

欢迎来到我的个人网站,期待与您的交流和合作!