您在此处:
在 Experience Cloud 站点中启用点击劫持保护
点击劫持是一种诱使用户点击某些内容(例如按钮或链接)的攻击类型,因为用户认为内容安全。通过创建指向 Experience Cloud 站点页面的隐藏 iframe,黑客可以诱使用户点击似乎在不同 Web 页面上的元素。但是,不是由可见元素处理点击,而是点击被劫持,顶部不可见站点 iframe 的某些元素接收到它。点击劫持可能会导致数据入侵、未授权的电子邮件、更改凭据或其他特定于恶意站点的结果。但凭借点击劫持保护,您可以通过控制浏览器是否允许指向页面的框架来保护站点。
您可将 Experience Cloud 站点页面的点击劫持保护设置为以下其中一个级别。
- 按任何页面允许框架(无保护):安全级别最低。所有外部域都可以构建站点页面的框架。
- 允许对外部域上的站点页面构建框架(保护效果良好):只有受信外部域才可以构建站点页面的框架。您可以在“内联框架的受信任域”列表中指定您信任的域。
- 仅按相同来源允许框架(推荐):Experience Cloud 站点的默认级别。允许按相同域名和协议安全性的页面构建站点页面的框架。
- 不允许任何页面搭建框架(最强保护):最安全的级别。但对于 Salesforce 选项卡 + Visualforce 站点和体验生成器站点,此选项会阻止打开体验工作区管理部分中的页面。为避免此问题,请选择不同的点击劫持保护级别。
为体验生成器站点启用点击劫持保护
- 在体验生成器中,选择。
- 在点击劫持保护级别下,选择点击劫持保护级别。
-
如果您选择允许在外部域上构建站点页面框架,请指定您信任用来构建站点框架的域。对于每个受信域,请执行以下步骤。
- 对于内联框架的信任域部分,单击添加信任域。
-
输入可以构建站点页面框架的域。
对于每个体验生成器站点,您最多可以添加 100 个受信域。
一些基础设施限制了 HTTP 标题的最大大小。如果您允许多个域构建站点框架,请将 CSP 标题的大小保持在 12 KB 以下。当标题大小接近 16 KB 时,Salesforce 客户会报告问题,第三方通常会在处理过程中添加到标题中。
提示 添加的域仅在选择允许对外部域上的站点页面构建框架(良好的保护)时生效。
为 Salesforce 选项卡 + Visualforce 站点启用点击劫持保护
-
要访问“站点详细信息”页面,请使用以下方法之一。
- 在体验工作区中,选择
- 从 Salesforce 设置中,在快速查找方框中输入站点和域,选择站点,并从站点列表中选择站点。
- 单击“站点详细信息”页面上的编辑。
- 选择点击劫持保护的首选级别,并保存更改。
-
如果您选择允许在外部域上构建站点页面框架,请指定您信任用来构建页面框架的域。对于每个域,请执行以下步骤。
- 在内联框架的受信域部分中,单击添加域。
-
输入可以构建站点页面框架的域。
对于每个 Salesforce 选项卡 + Visualforce 站点,您最多可以添加 512 个受信域。
一些基础设施限制了 HTTP 标题的最大大小。如果您允许多个域构建站点页面的框架,请将 CSP 标题的大小保持在 12 KB 以下。当标题大小接近 16 KB 时,Salesforce 客户会报告问题,第三方通常会在处理过程中添加到标题中。
提示 添加的域仅在选择允许对外部域上的站点页面构建框架(良好的保护)时生效。
sameorigin、deny(无)、allowall 和 allow-from URI。特别是 allow-from URI 仅支持一个 URI。为了支持 IE 用户的列表,框架站点必须通过在 iframe 标记中传递查询参数来向站点域表明自己。例如,如果您将 https://example.com 添加为受信外部域,https://example.com 上的页面必须按如下方式接受 iframe:
<iframe src="https://MyDomainName.my.site.com?_iframeDomain=https://example.com"></iframe>您也可以在iframeDomain Cookie 中设置受信外部域。如果在 IE 中导航页面时未保存_iframeDomain URL 变量,此方法允许 iframe。
Cookie iframeDomainCookie = ApexPages.currentPage().getCookies().get('iframeDomain');
if (iframeDomainCookie == null) {
iframeDomainCookie = new Cookie('iframeDomain','www.example.com');
// Set the new cookie for the page
ApexPages.currentPage().setCookies(new Cookie[]{iframeDomainCookie});
}

