跨站请求伪造防范
在 PTC FlexPLM 11.0 M030 中,为大多数数据更改操作添加了跨站请求伪造 (CSRF) 防范支持。
PTC FlexPLM 实施的解决方案是在建立会话时为每个用户生成唯一令牌。此唯一令牌又称为随机数令牌,缓存在用户会话中。每次服务器针对此会话生成数据更改 URL 时,服务器都将随机数令牌包含在名为 CSRF_NONCE 的表单隐藏字段中。当用户为此操作提交表单时,会将此隐藏字段发送回服务器,然后可以将请求中的随机数令牌与会话中的随机数令牌进行比较。如果随机数令牌丢失或不匹配,则拒绝请求并显示以下错误:A potential security problem was detected. Refresh the page and try again. If the problem persists, contact your administrator. 此外,也会将检测到的潜在 CSRF 攻击事件记录在审计日志中。
通过确保任何执行操作请求 (例如,在应用程序中创建、更新或删除数据) 仅来自于用户有效单击应用程序内生成的有效链接,而不来自于第三方精心制作且由客户不经意提交的 URL,可防止跨站请求伪造 (CSRF) 的攻击。
各种 CSRF 防范技术包括:
• 使用唯一令牌
• 使用询问-响应方案,如 CAPTCHA
• 检查 HTTP 引用网站标头
• 检查 HTTP 原始网站标头
• 在访问应用程序时建立并使用最佳实践
要保护某个操作免遭 CSRF 攻击,请执行以下操作:
• 在生成操作时,客户端必须在 csrf.js 中使用 appendNonce。
• 所有请求都需要通过 Main.jsp 或者标准的转发和包含流,以便执行正确的验证。例如,如果 jsp 正在执行一项并非 MainTemplate.jsp、Chooser.jsp 或 Main.jsp 的转发,并且转发到 MAINTEMPLATE 以外的页面,则需要更新以正确通过 MAINTEMPLATE。