直接上代码: @Test public void testUnicode() { String a = "Hello"; // \u000d a="world"; System.out.println...是的,没看错,那二行看似“注释掉的代码”,被执行了!...原因:java编译器会处理unicode字符,\u000d以及\u000a 正好对应“\r”回车、“\n”换行,经过编译器处理后,等效于下面的代码: @Test public void testUnicode...; System.out.println(a); } 个人建议:正式项目中,严禁在注释中使用这一类unicode字符,否则如果利用这个特性干点坏事,埋个坑,基本上很难发现!
window与unsafeWindow,那么如何实现一个完全隔离的window沙箱环境就值的探索,再比如在Web页面中是无法跨域访问资源的,如何实现在Inject Script中跨域访问资源的CustomEvent...此外在很久之前我一直好奇在GreasyFork上是如何实现用户脚本的安装的,因为实际上我并没有在那个安装脚本的按钮之后发现什么特殊的事件处理,以及如何检测到当前已经安装脚本管理器并且实现通信的,之后简单研究了下发现实际上只要用户脚本是以...那么我们在隔离的环境中,可以得到window对象是一个隔离的安全window环境,而unsafeWindow就是用户页面中的window对象。...曾经我很长一段时间都认为这些插件中可以访问的window对象实际上是浏览器拓展的Content Scripts提供的window对象,而unsafeWindow是用户页面中的window,以至于我用了比较长的时间在探寻如何直接在浏览器拓展中的...)的注释,其中这个sourceURL会将注释中指定的URL作为脚本的源URL,并在Sources面板中以该URL标识和显示该脚本,这对于在调试和追踪代码时非常有用,特别是在加载动态生成的或内联脚本时。
动态执行代码以及Content Script的"run_at": "document_start"建立消息通信确认注入的tab,这个方法是不是看起来很简单,但就是这么简单的问题让我思索了很久是如何做到的...以及unsafeWindow两个对象,window对象是一个隔离的安全window环境,而unsafeWindow就是用户页面中的window对象。...曾经我很长一段时间都认为这些插件中可以访问的window对象实际上是浏览器拓展的Content Scripts提供的window对象,而unsafeWindow是用户页面中的window,以至于我用了比较长的时间在探寻如何直接在浏览器拓展中的...window沙箱环境,也就是说我们希望网站本身执行的任何不会影响到我们的window对象,比如网站本体在window上挂载了$$对象,我们本身不希望其能直接在开发者的脚本中访问到这个对象,我们的沙箱环境是完全隔离的...xmlHttpRequest 接着我们来聊最后一个问题,脚本管理器是如何做到的可以跨域请求,实际上因为在前边我们明确了用户脚本是在浏览器当前的页面执行的,那么理所当然的就会存在同源策略的问题,然后在脚本管理器中只要声明了链接的域名
在一些场景中比如组件库的文档编写时,我们希望能够有实时预览的能力,也就是用户可以在文档中直接编写代码,然后在页面中实时预览,这样可以让用户更加直观的了解组件的使用方式,这也是很多组件库文档中都会有的一个功能...例如最简单的一个攻击形式,我作为用户在代码中编写了函数能取得当前用户的Cookie,并且构造了XHR对象或者通过fetch将Cookie发送到我的服务器中,如果此时网站恰好没有开启HttpOnly,并且将这段代码落库了...,那么以后每个打开这个页面的其他用户都会将其Cookie发送到我的服务器中,这样我就可以拿到其他用户的Cookie,这是非常危险的存储型XSS攻击,此外上边也提到了SSR的渲染模式,如果恶意代码在服务端执行那将是更加危险的操作...曾经我很长一段时间都认为这些插件中可以访问的window对象实际上是浏览器拓展的Content Scripts提供的window对象,而unsafeWindow是用户页面中的window,以至于我用了比较长的时间在探寻如何直接在浏览器拓展中的...,但是实际上我们还可以换个思路,我们可以将用户的代码放置于一个iframe中来执行,这样我们就可以将用户的代码隔离在一个独立的环境中,从而实现沙箱的效果,这种方式也是比较常见的,例如CodeSandbox
运行在本地的 3002 端口上,并且设置跨域,允许从 http://127.0.0.1:5500 访问。 油猴脚本 先简单写一个插入 我是油猴脚本的文本 的脚本,后边再进行修改。...(); 此时页面已经被成功拦截: image-20220823101447976 这里提一句,油猴脚本如果使用 @grant 申请了权限,此时脚本会运行在一个沙箱环境中,如果想访问原始的 window...并且我们加了 @run-at ,让脚本尽快执行。 fetch 请求 在 html 请求的 test.js 中添加 fetch 的代码。...重写 XMLHttpRequest 原型对象的 open 或者 send 方法,在函数内拿到用户当前的 xhr 实例,监听 readystatechange 事件,然后重写 responseText 。...总 通过对 fetch 和 xhr 的重写,我们基本上可以对网页「为所欲为」了,发挥想象力通过油猴脚本应该可以做很多有意思的事情。
♣ 题目部分 在Oracle中,如何让普通用户可以杀掉自己用户的会话?...♣ 答案部分 普通用户想要杀掉会话必须要具有ALTER SYSTEM的权限,但是由于该权限过大,用户可能使用该权限错杀其他用户的会话,所以,有没有其它办法可以实现该功能呢?...首先,可以创建一个查询自己会话信息的视图,将该视图创建公共同义词,然后创建一个存储过程,该存储过程实现杀掉会话的需要,最后将该存储过程的执行权限赋权给PUBLIC即可解决这个问题。...由于79会话属于LHR用户,所以,避免了误杀其它用户的会话,当使用LHR用户的时候,可以正常杀掉会话。...& 说明: 有关KILL SESSION的更多内容可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2121019和http://blog.itpub.net
有这样一个需求:当前作用域内有未知的一些变量,其中一个函数中可以拿到某个变量名字符串,怎么能在函数内通过传进来的字符串取到作用域链中的变量值,示例小 demo 如下: const name = '周小黑...' const age = 18 /** * @param {String} e 变量名字符串 * @returns value 通过变量名字符串在作用域链中取到的变量值 */ function...return value } const str = fn('name') 要解决上面的问题,主要就是怎么将字符串转变成可执行的代码?...主要有三种方式: eval() 函数 eval() 函数会将传入的字符串当做 JavaScript 代码进行执行,所以下面的字符串可以正确取到变量对应的值,eval 对比 new Function 和...setTimeout 定时器 setTimeout 的第一个参数我们平时都是传一个函数,它其实也是可以传字符串进去的,在浏览器中是可以正常执行的,在node环境中会报错。
在一些应用中,我们希望给用户提供插入自定义逻辑的能力,比如 Microsoft 的 Office 中的 VBA,比如一些游戏中的 lua 脚本,FireFox 的「油猴脚本」,能够让用户发在可控的范围和权限内发挥想象做一些好玩...与运行在「用户电脑中」的客户端应用不同,用户的自定义脚本通常只能影响用户自已,而对于在线的应用或服务来讲,有一些情况就变得更为重要,比如「安全」,用户的「自定义脚本」必须严格受到限制和隔离,即不能影响到宿主程序...而 Safeify 就是一个针对 Nodejs 应用,用于安全执行用户自定义的非信任脚本的模块。 怎样安全的执行动态脚本? 我们先看看通常都能如何在 JavaScript 程序中动态执行一段代码?...从另一个层面来看,况且或许有时我们还想让自定义脚本支持异步处理呢。 如何建立一个更安全一些的沙箱? 通过上文的探究,我们并没有找到一个完美的方案在 Node.js 建立安全的隔离的沙箱。...处理的数据和结果,还有公开给沙箱的方法 进程间如何通讯,需要「动态代码」处理数据可以直接序列化后通过 IPC 发送给隔离 Sandbox 进程,执行结果一样经过序列化通过 IPC 传输。
基础 这部分主要是开始写油猴脚本前应当有所了解的知识 常见的用户脚本管理器 Tampermonkey 应该是各位见得最多的也是最知名的,好用又稳定,多浏览器支持,我很喜欢 Greasemonkey 用户脚本始祖...新标签页打开指定地址(用来绕过 Chrome 会阻止所有非用户触发的window.open的限制) GM_registerMenuCommand 向油猴插件菜单中添加脚本指令(通常用于打开自己写的设置界面或者执行代码之类的...如果你在写脚本的时候有尝试直接通过 window 添加或访问网页全局变量,你会发现这是没有效果的 这是因为油猴的沙箱机制,任何人都无法从 window 直接访问到油猴的 API 或脚本内的变量,保证了安全...如果你确实需要访问 window,可以使用 unsafeWindow,但在正式发布的脚本中你不应该将任何油猴 API 或者脚本中的变量通过它暴露到 window 中 unsafeWindow 在不同脚本管理器中的表现可能会有所不同...IDE 编写油猴脚本 一般脚本管理器自带的编辑器功能十分单一,全程在里面写代码肯定十分不爽,那么如何使用自己的 IDE 编写脚本并随时保存随时生效呢 答案是利用元数据的 @require,它不仅能引用网络脚本
Tampermonkey 是一款免费的浏览器扩展和最为流行的用户脚本管理器,虽然有些受支持的浏览器拥有原生的用户脚本支持,但 Tampermonkey 将在您的用户脚本管理方面提供更多的便利。...如果访问了@exclude中与之匹配的内容则不执行自定义的JavaScript代码 @exclude优先权大于match和@include。如果二者都匹配了,那么默认执行@exclude规则。...也就是说即是’白名单‘也是’黑名单‘那么默认为’黑名单‘ 第三方链接 @require 指向在脚本本身开始运行之前加载和执行的 JavaScript 文件。...脚本中可以有任意数量的@require 键。每个 @require 在安装脚本时下载一次,并与脚本一起存储在用户的硬盘驱动器上。指定的 URL 可能与安装脚本的 URL 相关。...无论如何,在给定注入时刻之后发生的所有 DOMNodeInserted 和 DOMContentLoaded 事件都被缓存并在注入时传递给脚本。
如下面的代码片段所示,一个HostingEnvironment对象承载的执行环境的描述信息体现在定义这个接口的6个属性上。...ApplicationName和EnvironmentName分别代表当前应用的名称和执行环境的名称。...和ContentRootPath) 承载的四个与执行环境相关的设置,在WebHostOptions对象上都具有对应的属性,后者是前者的数据来源。...《应用的入口——Startup》中已经给出了。...如下所示的是WebHostBuilder用于注册Startup的两个扩展方法Configure和UseStartup的定义,我们可以清楚地看到在创建并注册Startup之前,它们都会设置当前应用的名称。
.NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间) 发布于 2018-11-06 15:33...不过传统的在代码中编写计时的方式依然有效,因为它可以生产环境或用户端得到真实环境下的执行耗时。 如果你希望在 .NET/C# 代码中编写计时,那么阅读本文可以获得一些建议。...基本的计时 计时一般采用下面这种方式,在方法执行之前获取一次时间,在方法结束之后再取得一次时间。 // 在方法开始之前。 Foo(); // 在方法执行之后。...这样,前后两次获取的时间差即为方法 Foo 的执行耗时。 这里我不会提到性能测试工具或者基准性能测试这些方法,因为这些测试代码不会运行于用户端。...此类型的时间统计是按照高性能和高精度的要求来做的,于是你可以用它获得高精度的计时效果。不过,如果你对性能要求近乎苛刻,例如你的方法会被数百万次或更高频地执行,那么就需要开始斟酌如何调用里面的属性了。
恶意脚本注入方式 那么这些恶意脚本是如何注入的呢? 通常情况下,恶意注入脚本的方式有三种:存储型XSS攻击、反射性XSS攻击和基于DOM的XSS攻击。...存储型XSS攻击 这个指的是劫持者正常访问网站,然后利用网站的漏洞将一段恶意代码提交到网站数据库中,然后别人访问这个上传恶意脚本的页面的时候,一些信息被上传到恶意代码上传的服务器中。...服务器要对输入脚本进行过滤和转码 充分利用CSP:限制加载其它源文件、禁止向第三方域提交数据、进行执行内敛脚本和未授权脚本等 使用HttpOnly属性:使用这个属性主要是为保护Cookie安全,通过服务器的...CSRF Token 类似于JWT的token。 35 | 安全沙箱:页面和系统之家的隔离墙 浏览器架构是如何影响操作系统安全的。...安全沙箱 主要是为了避免在渲染进程中被劫持着搞破坏,而在渲染进程和操作系统之家构建了一道墙,这样劫持者就获取不到渲染进程之外的权限了,我们把这个将渲染进程和操作系统隔离的强称为安全沙箱。
沙箱或称沙盒,即sandbox,顾名思义,就是让程序跑在一个隔离的环境下,不对外界的其他程序造成影响,外界无法修改该环境内任何信息,沙箱内的东西单独属于一个世界,通过创建类似沙盒的独立作业环境,在其内部运行的程序并不能对硬盘产生永久性的影响...沙箱设计的目的是为了让不可信的代码运行在一定的环境中,从而限制这些代码访问隔离区之外的资源。浏览器上JavaScript就是在沙盒中执行,严格控制的环境。沙箱将JavaScript与桌面世界隔离开来。...更严重的是,它切断了JavaScript与Web服务器上所有内容的联系,例如存储用户列表和产品目录的数据库以及运行业务逻辑的服务器端代码。...你不能够在模板表达式中试图访问用户定义的全局变量。...总而言之:要解析或执行不可信的JS的时候,要隔离被执行代码的执行环境的时候,要对执行代码中可访问对象进行限制的时候如何实现/使用沙箱实现沙箱最方便的模式iframe,同理,也可以使用webWorker。
今天我们就来看看如何编写自己的油猴脚本。当然为了运行油猴脚本,你应该在浏览器中安装油猴插件。 安装油猴插件 安装油猴插件非常简单,直接在浏览器的扩展商店中安装即可。...如果设置为none的话,则不使用沙箱环境,脚本会直接运行在网页的环境中,这时候无法使用大部分油猴扩展的API。...后来我发现我想的太多了,做法其实很简单。每天先获取一次日期,然后和事先保存的日期比较,如果不一样的话才执行脚本,并将日期设置为今天的日期;如果日期一样的话无事发生。...首先要思考脚本的实现方式,需要用到什么API和权限,然后填写好脚本的注释信息。 然后将功能封装成函数的形式,最后在脚本末尾调用实现的函数。写的差不多的时候复制到浏览器中尝试运行。...油猴脚本支持好几个网站,其中目前最主流的是GreasyFork,登录这个网站注册一个账号,然后进入用户页面选择提交脚本,然后填写脚本代码和各项信息。
可以用 deno 做下一代的沙箱么? 在 Ryan 的演讲中,第二个 regret 是 Security,我认为可能是 deno 相对于 node 做出的最重要的架构上的重塑。...有没有一种技术,在保证安全性和隔离性的同时,冷启动时间足够短,执行效率足够高,还可以即时部署,即时更新? 有!这就是我们在浏览器上跑了将近 30 年的 javascript。...除安全外,v8 从诞生到现在一直琢磨的就是如何让 javascript 加载和运行地更快一点。...于是乎,deno 看上去像是一个服务端的 chrome。它用 isolate 隔离用户的代码,并可以在极短的时间内加载并运行几乎不可能进行任何恶意行为的用户代码(如果权限控制得当)。...这个沙箱可以用来做服务端和客户端的用户代码执行(比如插件),也可以创建一个多租户的使用环境。 由 deno 想到的未来的软件开发场景... 互联网软件开发,对我而言,最大的痛点就在于部署。
候选人: 不是的,其实是我们把两个管理端合并,让用户方便使用。...3.BEM命名规范隔离 qiankun中如何实现父子项目间的通信?如果让你实现一套通信机制,你该如何实现?...通过动态加载,可以在需要时异步地加载远程模块,并在加载完成后使用模块。 在微前端应用中可以实现模块共享和动态加载,提供了更好的代码复用和可扩展性。...通过模块共享,可以避免重复加载和代码冗余,而动态加载则可以按需加载模块,提高应用的性能和用户体验。...这个模块通常是一个包含子应用初始化代码的函数,可以在主应用中调用以加载和启动子应用。
沙箱,即sandbox,顾名思义,就是让你的程序跑在一个隔离的环境下,不对外界的其他程序造成影响,通过创建类似沙盒的独立作业环境,在其内部运行的程序并不能对硬盘产生永久性的影响。 ...沙箱设计的目的是为了让不可信的代码运行在一定的环境中,从而限制这些代码访问隔离区之外的资源。 JS中沙箱的使用场景 前端JS中也会有应用到沙箱的时候,毕竟有时候你要获取到的是第三方的JS文件或数据?...你不能够在模板表达式中试图访问用户定义的全局变量。 总而言之:当你要解析或执行不可信的JS的时候,当你要隔离被执行代码的执行环境的时候,当你要对执行代码中可访问对象进行限制的时候,沙箱就派上用场了。...如何实现/使用沙箱 1、借助with + new Function 首先从最简陋的方法说起,假如你想要通过eval和function直接执行一段代码,这是不现实的,因为代码内部可以沿着作用域链往上找,篡改全局变量...总结 即使我们知道了如何在开发过程中使用沙箱来让我们的执行环境不受影响,但是沙箱也不一定是绝对安全的,毕竟每年都有那么多黑客绞尽脑汁钻研出如何逃出浏览器沙箱和nodejs沙箱,因此笔者个人建议: 1、业务代码上不执行不可信任的第三方
沙箱能够安全的执行不受信任的代码,且不影响外部实际代码影响的独立环境。 有哪些动态执行脚本的场景?...在一些应用中,我们希望给用户提供插入自定义逻辑的能力,比如 Microsoft 的 Office 中的 VBA,比如一些游戏中的 lua 脚本,FireFox 的「油猴脚本」,能够让用户发在可控的范围和权限内发挥想象做一些好玩...大多数都是一些客户端程序,在一些在线的系统和产品中也常常也有类似的需求,事实上,在线的应用中也有不少提供了自定义脚本的能力,比如 Google Docs 中的 Apps Script,它可以让你使用 JavaScript...与运行在「用户电脑中」的客户端应用不同,用户的自定义脚本通常只能影响用户自已,而对于在线的应用或服务来讲,有一些情况就变得更为重要,比如「安全」,用户的「自定义脚本」必须严格受到限制和隔离,即不能影响到宿主程序...•处理的数据和结果公开给沙箱的方法 进程间如何通讯,需要「动态代码」操作数据后可以直接序列化然后通过 IPC 发送给隔离 Sandbox 进程,执行结果一样经过序列化通过 IPC 传输。
沙箱(Sandbox)是一种安全机制,目的是让程序运行在一个相对独立的隔离环境,使其不对外界的程序造成影响,保障系统的安全。...作为开发人员,我们经常会同沙箱环境打交道,例如,服务器中使用 Docker 创建应用容器;使用 Codesandbox运行 Demo示例;在程序中创建沙箱执行动态脚本等。...由于Workers中的代码是在另一个全局上下文中执行的,因此可以被看作是沙盒执行环境。...在 iframe 中运行的脚本程序访问到的全局对象均是当前 iframe 执行上下文提供的,不会影响其父页面的主体功能,因此使用 iframe 来实现一个沙箱是目前最方便、简单、安全的方法。...沙盒实现具体代码实现(核心思路是通过 with 块和 Proxy 对象来隔离执行环境,确保执行的代码只能访问到沙盒内的变量。
领取专属 10元无门槛券
手把手带您无忧上云