相关疑难解决方法(0)

利用JavaScript的eval()方法

许多开发人员认为eval()应该避免使用JavaScript的方法.从设计角度来看,这个想法很有意义.当更简单,更好的选项可用时,它通常被用作丑陋的解决方法.

但是,我不了解安全漏洞的担忧.当然,运行eval()使黑客能够运行您可以运行的任何JavaScript代码.

但他们不能这样做吗?至少在Chrome中,开发人员工具允许最终用户运行自己的JavaScript.如何eval()比开发人员工具更危险?

javascript security eval client-side code-injection

10
推荐指数
2
解决办法
2万
查看次数

React 应用程序中的内容安全策略没有阻止在线脚本

我按照这篇文章将 CSP 添加到我现有的 React 应用程序中。我在那里完成了“使用内联脚本或样式”中编写的所有步骤,这是我的config-overrides.js文件:

const { override } = require('customize-cra');
const cspHtmlWebpackPlugin = require('csp-html-webpack-plugin');

const cspConfigPolicy = {
  'default-src': "'none'",
  'base-uri': "'self'",
  'object-src': "'none'",
  'script-src': ["'self'"],
  'style-src': ["'self'"],
  'img-src': ["'self'"],
};

function addCspHtmlWebpackPlugin(config) {
  if (process.env.NODE_ENV === 'production') {
    config.plugins.push(new cspHtmlWebpackPlugin(cspConfigPolicy));
  }

  return config;
}

module.exports = {
  webpack: override(addCspHtmlWebpackPlugin),
};
Run Code Online (Sandbox Code Playgroud)

为了测试它是否有效,我构建了应用程序npm run build(因为 CSP 刚刚添加到生产版本中),但在此之前,为了测试它是否有效,我将 jquery 添加到了里面的脚本中index.html:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

不幸的是,jquery 被添加到构建中,CSP 没有阻止它。

在此处输入图片说明

难道我做错了什么?还是我误解了内容安全策略?

content-security-policy reactjs webpack

7
推荐指数
1
解决办法
1万
查看次数