我一直在研究使用SVGO这样的库来清除前端用户提交的SVG代码。 SVGO是一个基于node.js的库,它通常在后端工作,所以我一直在努力探索如何从前端到后端发送SVG代码然后让清理后的代码重新启动前端。
当我试图解决这个问题时,我检查了他们的web app example,在检查时,会在链接脚本中运行代码,我通常会在前端的后端看到这些代码。特别是,他们的许多功能都有签名(full script):
1: [function(require, module, exports) {
"use strict";
var loadScripts = require("./load-scripts"),
...
module.exports = exportedFunction;
}]
非常令人困惑,因为这通常是我与后端关联的JS,特别是require
,module.exports
语法等等。
问题
感谢您的任何见解。我正在努力确保以最符合Web标准的方式构建我的项目。
答案 0 :(得分:6)
数目:
他们正在使用browserify或requirejs之类的模块加载器来允许在浏览器中使用commonjs模块。它并不意味着所有库都可以在客户端工作,例如使用节点io模块不起作用。
在发送之前在浏览器端进行一些清理会很有用(节省几千字节)。浏览器具有免费的优势,您无需为托管在客户端运行的代码付费,可以在浏览器上运行某些 optionnal 清理。 但:见3.
即使很容易进行客户端清理,也应始终检查并清理后端用户的输入,尤其是.svg
文件,因为它们可以包含<script>
可能允许XSS的标签。