vue安全方面的知识:
第一原则永远不要使用不信任的模板,
在vue中使用不信任的模板这等于允许在应用程序中执行任意的javascript代码,甚至更糟糕的是服务器可能会被攻破
比如在:template:"sertppp"//不要这样做因为vue的模板是javascript编译的而其中的表达式会作为渲染流程的一部分执行。尽管该表达式是在一个特定的渲染上下文中进行运算的,做好的处理问题方法就是回避
潜在的危险
html的危险
在任何 web 应用中,允许未过滤的用户提供的内容成为 HTML、CSS 或 JavaScript 都有潜在的危险,因此应当尽可能避免。尽管如此,有些情况下的风险是可接受的。
注意永远不要认为用户提供的 HTML 是 100% 安全的,除非它是在一个 iframe 沙盒里或者应用中只有编写这些 HTML 的用户可以接触到它。除此之外,允许用户撰写其自己的 Vue 模板会带来类似的危险。
url的危险
类似于
如果没有对该 URL 进行“过滤”以防止通过 javascript: 来执行 JavaScript,则会有潜在的安全问题。
有一些库如 sanitize-url 可以帮助你做这件事,但请注意:
只要你是在前端进行 URL 过滤,那么就已经有安全问题了。用户提供的 URL 永远需要通过后端在入库之前进行过滤。然后这个问题就会在每个客户端连接该 API 时被阻止,包括原生移动应用。还要注意,甚至对于被过滤过的 URL,Vue 仍无法帮助你保证它们会跳转到安全的目的地。
注入样式:"sanitizedUrl" v-bind:style="userProvidedStyles">
让我们假设 sanitizedUrl 已经被过滤过了,所以这已经是一个完全真实的 URL 且没有 JavaScript。但通过
userProvidedStyles,恶意用户仍可以提供 CSS 来进行“点击诈骗”,例如将链接的样式设置为一个透明的方框覆盖在“登录”按钮之上。然后再把
https://user-controlled-website.com/ 做成你的应用的登录页的样子,它们就可能获取一个用户真实的登录信息。