
无需加好友免费技术支持
在网页设计中,模板 HTML 程序指令散布在文件中,这些指令将在运行时通过 Web 在服务器或浏览器中 JavaScript 代码解释。
模板是一个静态文件,用于通过插入数据库检索或者从 HTTP 生成提取的动态内容 HTML 。
当模板引擎将动态内容视为要执行的代码而不是要插入的数据时,模板就会注入漏洞。
这会允许攻击者在服务器或受害者的浏览器中执行恶意代码。
Angular 注入中模板Angular 该应用程序由包装应用程序逻辑和状态信息的组件组成。在浏览器中使用模板呈现每个组件,描述输出的给定状态 HTML元件。React模板将使用"{{"和"}}"分隔符的安全差状态,并允许组件与使用事件处理程序的用户进行交互。使用"@Component"装饰将模板附加到组件上。
可以使用"templateUrl"提供相应模板文件的相对或绝对路径:
也可以使用模板"模板"内联字符串提供选项:
当不信任的输入传输到"模板"选项时,Angular模板注入漏洞时,模板字符串由字符串联生成:
避免以这种方式动态生成的模板。
相反,将状态加载到组件中并使用 Angular 内置插值逻辑可以安全地转换任何不可信的内容:
React 大部分模板模板 React 使用开发人员 JSX 以 JavaScript 语法制作原生的 HTML 标签。
JSX 从服务器加载的数据页面元素使动态渲染容易对应。
在构建过程中将代码转换为代码 JavaScript 提供一切 React 组件在 JSX 中定义通常可以避免模板注入攻击。
然而,React 运行时可直接使用组件
函数的低级 API。
如果使用不受信任的方法调用此方法的内容,则很容易被模板注入攻击:
如果调用
攻击者也可以控制 HTML 标签的属性和内容React 组件上的函数:
React 中模板注入漏洞的最终来源是href如果链接属性href属性或者import语句是由不受信任的内容动态生成的,攻击者可以提供带有javascript:前缀的 URL: