危机/滥用网站中恐慌button的最快退出策略?

我正在做一个妇女虐待资源中心的网站。 许多这样的中心被中心称为“恐慌button”。 绿色栏中每个页面的顶部都有一个基本的例子。

链接或button的想法是,如果一个女人正在看这个网站的帮助,他们的施虐者或他们不想知道的人走在房间里,它允许一个快速逃生。 有时候,一个链接要快得多,然后closures一个浏览器窗口,这可能是可疑的。

我看到的问题是,我看到的大多数button只是把你发送到谷歌或类似的东西。 我要做这样的事情:

<a href="http://www.msn.com/#news" rel="noreferrer">LEAVE WEBSITE NOW!</a> 

要么

 <a href='data:text/html;charset=utf-8, <html><meta http-equiv="refresh" content="0;URL='http://www.msn.com/#news/'"></html>'>LEAVE WEBSITE NOW!</a> 

像这样的链接将滚动到一些实际的内容。 它不是一个空白的谷歌search,但也不是一个非常具体的事情,可以被视为可疑。

我知道,阻止引荐者是好的,但即使使用该解决scheme,您可以点击浏览器上的后退button,然后捕获。 对于这个问题,我想我可以做这样的事情:

HTML

 <a href="javascript:goNewWin()" rel="noreferrer">LEAVE WEBSITE NOW!</A> 

JavaScript的

 function goNewWin() { window.open("backbuttonnewpage.html",'TheNewpop','toolbar=1,location=1,directories=1,status=1,menubar=1,scrollbars=1,resizable=1'); self.close() } 

我张贴,因为有这样的生命危险,我需要的东西,尽可能接近总解决scheme。 你会怎么做?

更新3-26-14:
我运行了与我正在合作的资源中心发布在这里的一些教育理念,这里是他们的答案。 “我们的用户甚至来到我们的网站上需要极大的勇气,他们来的时候,他们正在寻找一个快速简单的资源,以摆脱可能危及生命的情况,在大多数情况下他们没有时间或精力以安全的方式教育自己浏览我们的网站,当呈现“恐慌button”的想法时,如果做得好,似乎是大多数受害者所要求的资源。

在阅读了很多这里的想法之后,似乎整个解决scheme将会是一个大的button,浮动在左侧的固定位置。 当页面加载它加载另一个网站在后台(也许ajax调用),以便点击button只是删除重叠的框架。 这意味着点击时没有加载时间。 为了避免后退button的浏览器,它似乎是告诉浏览器不要caching是必要的,以及可能使用每个页面上的replaceState更改禁用显示此网站的后退button。

这仍然是一个技术问题。 辩论非常有帮助,但我仍然需要一个可行的技术解决scheme。 任何人都认为他们能够将所有这些想法融合到一起, 我会马上工作,我会发布任何我想出的东西。 谢谢大家。

(几乎)最终编辑

好吧,我已经阅读了所有的评论,这是我认为是最好的解决scheme,但我也想到了一个ALL-LOCAL ALTERNATIVE。 我愿意进一步改进/讨论

 var panic= function(){ document.body.innerHTML = ''; //this clears the current html in the body //making it look like the page is loading if(...){ //check if replaceState is supported so no error is thrown var title="Decoy Article Title", url="/decoypage"; //another endpoint on your server that gives the decoy website window.history.replaceState("", title , url); //replace current history entry } //should be pretty fast up to this point window.location.replace("http://www.google.com"); //load the google page or my alternative. } 

我在我的AWS实例54.186.79.95举了一个例子转到该页面,单击button,访问另一个页面,然后回来,你现在在54.186.79.95 / devcoywebsite,并没有logging你在54.186.79.95 /,如果caching被禁用,您的服务器将看到“../decoywebsite”请求并发送诱饵页面。 不幸的是,你不能修改整个域名,所以你需要域名是不可疑的。

如果你想摆脱页面内容,我相信最好的方法是使用document.body.innerHTML=''; 。 你仍然在技术上的页面,但所有的内容都没有了。

下一步是修改您的浏览器历史logging。 window.history.replaceState ( 链接到文档 )是一个HTML5function,可以修改您的历史logging,而无需重新加载页面或向服务器发送请求。 这是相当快,但只适用于现代浏览器。 当用户点击恐慌button,我们将用一个假的URLreplace他历史上的当前页面。

如果滥用用户点击回来,您的服务器(PHP,Python,无论)将收到与您的假url请求。 所以你需要在你的服务器上有另一个端点(让我知道你是否不理解端点)。 为了避免怀疑,如果施虐者快速浏览一下网站,做一个与您的原始网站类似的外观和感觉良性的文章,食谱或天气报告。 还要确保浏览器不使用<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">标签<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">

补充说明

  • 理想情况下,您的整个网站(当然除了您的诱饵文章)应该是一个SPA(单页应用程序),所以它只能产生一个浏览器的历史logging,你只需要修改一个。
  • 在一天结束的时候,我不认为你不能做一个100%的万无一失的恐慌button,会有解决办法。 你只需要find一个具有可接受的安全性和便利性。

另一种select:在当地更改信息并修改浏览器历史

我也在想如果不是加载谷歌 ,如果它不是最好的真正的信息在本地实际转换您的网站 。 这看起来比加载谷歌(每个人都没有)可疑,你可以在本地做到这一切,无需重新加载页面。

当他们点击恐慌button,你做一些快速(和跨浏览器兼容)的DOM操作,以改变您的网站incriminating信息,使其看起来无辜(也许只是改变文本,它必须是快)。 这样,所有这一切都在本地完成,在绝大多数浏览器中,这几乎是即时的。 您不必担心重新加载/服务器,因为脚本应该已经加载并准备好了。 如果保持相同的外观和感觉,它看起来像用户只是导航到网站的不同页面。 不要让你的网站看起来太明显,这是一个危机网站。 当然,你无法回到原来的内容。 我也会在恐慌button上清楚地说明这个策略是什么,这样用户就不会惊慌失措。

我仍然会尝试更改浏览器历史logging,并购买另一个承载诱饵页面副本的域,如上例所示。 不仅如果域名是可疑的,但如果滥用用户刷新或回到他的历史。 你应该让整个网站成为SPA,因为你只能修改你当前的条目,而不能修改你以前的历史。 当然,这仍然只能在HTML5浏览器中工作,只要确保没有错误发生,另一部分脚本仍旧在旧浏览器中运行。

人们怎么想? 这有什么缺点? 什么是可以取代的好内容?

既然你说生活在你的实施风险,我强烈build议教育用户使用多个选项卡,而不是点击一些恐慌button。

我的理由是

  1. 在“紧急”的时候,用户需要多长时间把手移到鼠标上(假设他们举起手来打字或摸他们的头发,或者他们想做什么),我们假设他们需要 – > 0.5秒
  2. 在您的示例网站中 ,绿色栏实际上非常小,坦率地说,不是每个人都是非常准确的用手,眼睛协调(而且鼠标光标加速度可能会在操作系统和用户configuration文件之间有所不同),用户必须移动鼠标到“恐慌”button并单击,除非他们是专业的FPS游戏玩家,否则可能需要再次 – > 1-2秒
  3. 我最后一个可能的假设是,如果您的脚本涉及加载远程资源,例如www.google.com,则可以通过假设浏览器为
    • 现代
    • 启用了脚本
    • networking速度和延迟是最佳的
    • 高速caching已准备就绪。

如果你打算加载远程资源,我build议你插入一个带有z-index的div:-1和一些虚拟的web内容。 点击后,将它们的z-index移到更高,以覆盖屏幕上的所有内容。

所以如果我们假设你加载了一个远程资源和所有的未知variables,我们可以假设所花费的时间是 – > 0.5 – 10秒

如果你要写一个可能会杀死某人的程序,我强烈build议你不要冒险做一些可能需要2-12秒才能保存的东西。

教育您的用户通过放置指示横幅

  1. 打开一个不会威胁自己生命的标签(例如google.com,msn.com,yahoo.com)
  2. 与您的网站打开另一个选项卡
  3. 在您的网站上正常导航
  4. 在紧急情况下,请按Ctrl + W查看Google Chrome, IE ,Firefox,Opera(请确认其他主要浏览器)

如果你有完整的想法,按Ctrl + W与你计划的解决scheme,我可以保证Ctrl + W会更快。

这个答案假定历史和地址栏不是一个问题。 至less,不是马上。

脚本

朱莉是配偶虐待的受害者。 她在互联网上寻求帮助,她来到您的网站: http : //www.crisisprevention.com (这个答案是虚构的)

当她在仔细阅读你的网站时,她听到她的配偶迅速地走近房间。 她惊慌失措 幸运的是,你有一个不错的大button,滚动时固定在页面上。

她点击这个button,然后…

它把她带到Google.com

我不喜欢这种方法,原因如下:没有人会相信你只是坐在你的电脑前盯着谷歌search提示。 相信我。 我已经尝试过了。

我曾经使用Google提示符打开一个标签页,如果我正在浏览工作内容的话题,我会切换到Google标签页,这样就没有人更聪明了。 它的工作…有点。 直到人们开始质疑为什么我整天都在盯着Googlesearch屏幕。

自那时以来,我开始在各个州开展各种工作项目。 通常情况下,我正在浏览之间的东西。 所以,现在我正在做一些工作! 这不是一个科技天才,这就是为什么@李加里的答案可能是最好的。

这需要她…它仍然把她…哦互联网连接问题

这是你需要做好准备的现实。 也许互联网连接在她惊慌的时候被打断了。 当前的内容保持显示在页面上,而她等待HTTP GET请求获取内容,它可以开始呈现…只有,没有内容被检索。 互联网连接断开。 这可能是由于许多原因造成的:

  • 配偶断开连接。
  • 正在联系的服务器处于极端负载下。
  • 浏览器在内存上运行不好。
  • ISP有问题。
  • 拨号连接/断开(是的,这些仍然存在)。
  • 电脑只是很慢。
  • DNS服务器closures。

原因继续,为什么当浏览器遇到恐慌button时,浏览器可能会窒息,并试图将她移到新的站点。

即时服务替代网站

我的解决schemebuild议您在网站的后台预载一个网站。 将其加载到<div> ,并将其隐藏在正常站点后面。 如果内容很大,那么你可以考虑用z-index而不是display: none来隐藏它。 这样它将被预渲染( 我相信,这里可能是错的 )。

现在,如果她的互联网连接closures,这并不重要。 她已经有内容了。 HTTP GET请求没有延迟。 它只是立即显示。

如果地址栏是一个问题,您可能仍然可以通过提供与您的域相关的替代网站来缓解这一问题。

例如,采取虚构(为这个答案)域: http : //www.crisisprevention.com

你可以提供一些关于解决世界饥饿危机的文章。

这里的想法是,这是最扼杀的第一眼。 当配偶走进来,他看到她离开Goog​​le.com时,惊慌失措地看着她,他会怀疑有什么事情出来,并且更倾向于调查。 同样,如果她因为HTTP GET请求缓慢或失败而被隐藏起来,可能会更糟糕。

恐慌button有一些大问题:

  • 很难点击它(你必须是准确的)
  • select它需要时间(如果你没有鼠标的话,在笔记本电脑上需要很长时间)
  • 它将您保存在历史中
  • 它可以通过后退button/退格键访问。

那么当一个女人正在阅读这篇文章时,试图快速点击那个button的那个恐慌随机的动作呢。 如果她从第一次尝试中错过button怎么办?

所以,如果真的有人类的生命可以得救,这是一个坏主意。

更好的方法是向他们展示这样做的正常方式(通过某种帮助,然后才能进入本网站)。 它可以是这样的:

根据用户的浏览器,你给他们一个只使用键盘(根本没有鼠标)的步骤列表。 例如,如果她在铬上。

  1. 打开你喜欢的网站(FB,Twitter,有趣的兔子,假装你正在做什么)。
  2. 按CRTL + SHIFT + N(打开隐身窗口),这将不允许退格/历史窍门
  3. 在那里进入我们的网站(没有copypasting,以防止检查你的缓冲区里面是什么)
  4. 阅读这些东西,并始终将手放在靠近CRTL和W的键盘上
  5. 如遇紧急情况,请按CRTL + W
  6. 继续主演你的FB,twitter,有趣的兔子

当然,你必须用适当的语言修改你的解释。 但是这样很难被抓住。 也请告诉坐在镜子和其他reflection表面,如窗户,玻璃和其他东西旁边。 要求他们尝试使用这些组合一段时间来熟悉。

如果涉及到人的生命,你必须要专业,不要使用这些恐慌button。 尤其是,如果教人们如何做到这一点更快,更安全。

回答Nobius

我明白了你的意思,谢谢。 但是我不同意你的观点。 经过很多FB的运动,你真的看到FB了吗? 我还没有。 非技术人员因为提出可笑的不好的想法而臭名昭着,其中一些你可能已经经历过了(防止右键点击银行页面来提高安全性,4位数的密码更容易从手机input)。 按下button听起来更容易,但看看我的步骤列表 – 在紧张的情况下,你需要做的唯一事情就是按CTRL + W。 你不需要考虑制表符,模式和其他东西。 这是基本模式 – 看到某人,按CTRL + W。 在我看来,这并不难,而且容易记住。 记住点击button并不困难。 一切你必须在正常的气氛中阅读。

按下2个button比移动鼠标快得多,当你的手指在他们身上时,真的很难错过他们(做一个实验,让自己充满压力,尽量快点击那个button)。 也正如我所提到的 – 我看到至less有四个原因,在panic button情况下怎么会出现问题,而我在CRTL + W中看到的原因要less得多。 如果人类的生活涉及 – 你需要专业。

回答NicolasMoise 。 为什么人们不停地说,你需要精通CTRL + W技术? 我不是想向人们展示如何使用TOR,VPN,build立encryption通道。 这只是CTRL + W。 人们学习如何玩愤怒的小鸟来减less他们的时间(这比记住2个button要困难得多),所以人们可以学习CRTL + W来拯救他们的生命。 教程可以以这样一种方式显示,观察者不明白你为什么阅读这个(当你看到我的步骤列表,我不相信第一个猜测会是 – 这是妇女滥用网站)。

但是最可能让人们对虚假安全的认识要好得多。 答案不是题外话。 这个人正在问如何实施恐慌button – 我正在解释为什么目前的方式有缺陷,他可以做些什么来做得更好。 这与“我想保证沟通安全,我正在使用替代密码”是一样的,是的,你可以提高密码的速度,假装一切正常,或者你可以用另一种方式。

最后一次尝试解释我的附加点 :你必须正确解释人们背后的风险。 一个很好的例子是,当人们不能正确解释问题时,白俄罗斯的博主们认为,在互联网上匿名发布会使他们无法从政府的压制中追踪。 这些资源给了他们错误的信念,即如果他们不提供真实身份,他们就会被拯救。 他们了解到,这是不正确的(当他们被监禁几年)。

如果有人向他们解释风险,我想他们中的一些人会很乐意学习如何使用任何工具来挽救未来五年。

那么为什么不给妇女几个select:

  • 您可以立即使用方法A,以下列出您可能遇到的问题。
  • 你可以使用方法B,第一次需要X分钟来阅读和理解。 然后,你可能遇到的问题列表会减less到一个更小的列表。

让他们决定他们想做什么。 这样他们知道风险。

我想你还有很长的路要走。

发送人到Google页面的原因是

  1. 它加载速度非常快
  2. 无论如何,它可能会被caching
  3. 它渲染速度非常
  4. 它真的很好的优化
  5. 我提到它速度快吗?

你提供的链接很慢。

如果你想提供一个快速的方式来改变屏幕,然后打开你的网站在一个框架集 – 披风在一个高度为0的框架,你的网站在一个全高的框架。 然后,当用户点击框架高度左右的链接交换,并redirect到顶层窗口到已经加载的页面。

我正在扩大这个问题的范围,因为点击恐慌button确保用户不会被抓到。

这个问题需要根据风险以及用户的计算机识字率来发布。

因此,以最友好的方式给用户一些基本的安全知识可能是一个好主意。 即使用户处于高度压力之下,他们也不知道他们可以留下什么痕迹。

痕迹

浏览logging

在任何时候,用户使用您的网站没有私人浏览,它会留下非常明显的痕迹。 没有正确的方式来检测浏览器是否以私人模式运行,但是您可以在入口处警告他们应该切换到私人模式, 以及删除当前的input历史logging。 您可以准备一些屏幕截图,供用户关注以删除历史logging(或者仅删除网站的条目)

cookies

如果您使用cookies,下一个人可以获得这些cookie(即使它们已经过期),并且可以理解这个网站已被使用。 如果可以,请使用自定义标题进行授权,这将不会在计算机中留下任何痕迹。
这可能会迫使你改变应用程序的结构,这可能不是一个好主意。 确保用户正在使用隐私浏览会话后,才在浏览器中设置Cookie。

高速caching

如果您通过打开页面和检查networking来使用caching,技术人员可以检测到网站是否被访问过。 请确保您明确指示浏览器不要在响应中使用这些标头进行caching:

 'Cache-Control: no-cache, no-store, must-revalidate' 'Pragma: no-cache' 'Expires: 0' 

返回键

在更改页面时,每个页面将被放入当前的历史logging(即使在隐私浏览会话中),允许使用后退button。 如果可以的话,在每个页面更改上使用replaceState ,以便后退button被打破。

encryption

使用HTTPS来防止窃听。 请注意,DNS查询仍然是未encryption的,但我不认为这将是一个问题,除非用户泄露政府的东西。 如果是这样的话,一个网站就不够安全了。

一般来说,这些应该足以去除痕迹,也要确保你没有使用像localStorage这样的其他持久层。

紧急button

这是一个完全不同的问题,我们需要在计算中包含多种东西。
首先,如果这是一个危及生命的情况,我们必须明白,用户在需要启动panic exit时将处于极度压力panic exit 。 我们不知道电脑屏幕是如何定位的,我们不能猜测用户在恐慌时做什么。

屏幕定位问题

最糟糕的情况是屏幕的位置可能会威胁到屏幕和网站的距离。 如果是这样的话,该网站的devise应该与exit site非常相似,以消除任何怀疑。 通过比较两个网站(在一个相当黑暗的房间内)屏幕发出的颜色,即使屏幕不是直接可见的,从一个不同的devise移到白色的Google也将是显而易见的。

退出速度

如果您只是重新定向,那么可能不够快,无法及时更改。 您必须在iframe中预装载出口,并且在恐慌的时候,您应该将其全屏显示,然后进行redirect。 这将有助于caching出口网站的静态内容,并使事情看起来更快。 确保使用replaceState而不是自然导航来禁用后退button。

退出路线

您必须确保退出路线将立即和容易地供用户点击。 我认为最可能的两种状态是用户正在input ,或者用户正在导航 。 这意味着你应该有退出键盘快捷键和HTML中的一个大button。

键盘退出

I think using either hitting the ESC key twice should trigger it, or holding one of the big keys should (like space or enter). Either way, you should let the user know about this, and possibly, let them train themselves by trying. Trying panic exits will both help them in anticipating behaviour on panic to make a good reasoning (Having the behaviour expected could be relieving), and they will be trained to do so, such that they will be more likely to do it properly in the panic time.

Mouse Exit

This is going to be pretty straightforward, have a big, different colored button that will trigger the panic.

Where to Exit?

That depends on the case, by design it might be sensible to make a redirect to a commonly used, similarly designed site by default. It might also be sensible to allow the user to choose the exit site by themselves (after making a sane default).

笔记

  • If the user is using private browsing and panics, the browser will still be on private browsing state, which might arouse suspicion. There is no easy way around it. You can try to instruct user to clear the history afterwards, but they might not have enough time for it.
  • Most of the answer focuses on desktop browsers, the experience on a mobile device will be different, but not very much.

Reliable Escape

EDIT: Another thing that comes to mind is that if the user has lost Internet connectivity, which happens for all kinds of reasons including somebody disconnecting the cable, then there is no way you could navigate them to another site. They could be stuck there like a deer in headlights on the "incriminating" page. I think this adds credibility to the idea of actually navigating to a benign partner/affiliate site that in turn loads your site in an iframe directly on their page. All you have to do to make your site disappear is delete your iframe from the DOM using JavaScript that is already loaded into the iframe. It would work even if the Internet connection went dead.

I would enable the Escape key for a quick exit. That's a physical, well-known key on the keyboard that the user can lunge for if they need to, rather than moving a finicky mouse pointer to a virtual button and clicking.

EDIT: I just realized that an earlier poster did mention the Escape key, referring to it as "ESC." I searched the page for "Escape key" before writing my response, but missed that.

EDIT: I'd leave the Panic Button on the page, too, with the text "Click Here or PRESS ESCAPE to Exit Quickly." But I'd put one at the top and one at the bottom of the page. Maybe I'd put a strip all the way around the page. If the visitor clicks anywhere in that border zone your content disappears.

Also consider; to make the Panic Button reasonably easy to click in a panic situation, you'd probably need to make it a little bit oversized and make sure it's always on the screen by moving it as the page scrolls, or by putting multiple Panic Buttons on the page, which could be kind of suspicious-looking in and of itself. It seems as if these probably want to be pretty discrete-looking pages that you're talking about.

If you're using jQuery, you could do something like the following to respond to the Escape key:

 jQuery( function ( $ ) { $( document ).keyup( function ( e ) { if ( e.which === 27 ) // escape { // clean up... } } ); } ); 

Single-Page AJAX App

It looks like all of the suggested solutions are about figuring out some way to quickly navigate to some other site, either by having it pre-loaded and quickly displaying it over the top of your site, or by clearing the DOM then navigating away, or whatever.

If I were going to take that approach, I'd have a laundry list of universally benign sites and search engine searches that I would cycle through so that it isn't the same "search for black women's shoes" showing up every time.

But what about turning the whole concept on its head? Use one or more benign decoy sites, or even solicit unrelated benign commercial sites to host a benign-looking link, and load your site as a single-page AJAX app in an iframe on top of the host page (s)?

EDIT: You could even do this by having your home page briefly state that it is going to redirect the visitor to a cooperative partner site for their own safety and show a big friendly "Go" button. If you have multiple partner sites you can push them to, so much the better. When they click, erase the browser history for your page, redirect to the affiliated site with a URL query parameter that tells your bootstrap JavaScript at the affiliate to immediately load your iframe. From that point forward, there is no additional load on the affiliate's web server. This way, you have an official Home page, but you immediately get the visitor completely off of your page.

Pressing the Escape key or clicking the Panic Button would just delete your iframe from the DOM, leaving the benign host page and no browser history. (Poof)

You could mitigate browser history issues that way since your link would run a bit of bootstrap JavaScript code and you would never actually navigate the browser to your site at all.

When the bootstrap link in the host page is clicked, it would insert an iframe into the DOM, float it (absolute positioning and z-order) to position it on top of the host page, then make an AJAX call to your web service to retrieve HTML content that it would load into the frame. All additional links and/or buttons in the frame would also make AJAX calls to your service, whether posting data to the server or retrieving data for display. You would never load an actual "page" in the user's browser at all.

Another nice aspect of this approach is that if the browser crashes or becomes unstable and has to be shut down from Task Manager, which would prevent the cleanup code from running, well that won't matter because you don't (necessarily) have anything to clean up.

Houston…?

A few serious problems I see with any of these solutions off the top of my head, particularly given the context that lives may be on the line:

  • cached objects (images, primarily) in the browser cache

  • the router/firewall might be logging HTTP/HTTPS requests, and the victim may not know this, and nothing you do to clean up the browser will mitigate that

  • there could be keylogging/screencap spyware installed on the user's machine and nothing you can do from a browser app will mitigate that

  • computers crash, web browsers get flakey and crash and traces get left behind because cleanup code can't run.

As suggested by at least one other poster (honestly, I've only briefly skimmed the other posts), using browsers in secure mode should mitigate many of these scenarios. But that is a user training issue and user training can be a little crazy under the best conditions. It could be real tough to get right if the victims aren't very tech-savvy, especially if they really are in a panic-mode situation where calm thinking might be difficult.

You might take a look at the "Boss" panic buttons on some old games and sites. The idea is that you could switch quickly to something innocent looking if your boss came by (of course, you have to see them approaching first!).

Almost any hurried/frenzied action when the abuser comes in is going to arouse their suspicion. Consider designing the screens so that they look like general news or the like (from a distance), with no large titles or pictures giving away their purpose. This could often allow time for a "leisurely" exit from the site, without panic. If the panic button link takes the user to, say, a bona fide news site, so much the better (if it comes up fast enough).

As others have mentioned, if the abuser becomes suspicious (and many control freaks are), there's still a history trail on the browser that they can quickly find out where the user has been. Frankly, there's not much you can do, especially if the user goes into a frenzied panic mode trying to cover their tracks, and the abuser sees this. Even if the screen itself can be refreshed to something innocent after some timeout, the browser history will have the URL.

Consider advising users to position the computer so the abuser can't sneak up on them from behind, or to go to a library or other non-private place to use this site. If the screen content is dull looking from a distance (see above), it shouldn't attract interest from others.

Good luck with this!

You could show an error page instead of an actual site, which is already loaded in the background. Maybe a fake youtube or google 404 page? I think this would keep the size of the extra content to a minimum.

As others have suggested, I would also use the escape key. Reduces the change of missing it, would be a lot easier for someone with a mousepad and the user can keep his/her finger on it when he/she is just browsing through the site.

You can also use other options; a button on the page itself or let them know about other methods of escape (ctrl + w, as mentioned before). Maybe also a gesture for the tablet users? There are probably some libraries for that.

And of course, you could change the url in the taskbar. (See other posts for code on how to do that).

Encourage them to try the escape options out. So they know what they do and how they can react to it.

I think we can do this differently. My Idea is as follow:

  1. Show the website with only fake content (similar style and layout with the real one).
  2. User needs to do certain interaction with the content to trigger step3(eg put XYZ in a textbox or have clicked a combination of Checkbox or RadioButton, etc.).
  3. With step 2 satisfied, when user hangover certain tiny point on the page (right hand side), the page will display its real content. And the content will remain if the mouse is over it.
  4. In an emergency/Panic, user can just move the mouse away from the real content, and the content will be changed back to the fake one.