1.xss(跨站脚本攻击)
通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的恶意脚本。
这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,
攻击者可能得到包括私密网页内容、会话和cookie等各种内容
1)反射型(基于后端)
前端访问服务端,服务端返回数据给前端,xss攻击可以在后端返回的内容中植入恶意代码
2)DOM-Based
修改DOM请求属性(img src属性等)可以植入恶意代码
3)存储型
恶意脚本存到了数据库里了,这样所有人访问就都被攻击了
4)解决办法:
xss攻击要点就是没有对重要信息进行校验,我们可以在前端发数据给后端,后端发数据给前端,数据展示时这三个阶段进行数据校验,
把& ' " < >这些脚本重要组成符号转义成&"'<>等对应的特殊符号来阻止脚本执行。
2.csrf(跨站请求伪造)
CSRF是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。
用户在自己的网页上登录了,浏览器中已经存在了cookie,在诱导用户点入攻击者的网页来,在攻击者的网页上访问用户网站会在自动携带上cookie
(访问的服务器一样就会携带一样的cookie)
解决方法:
1.添加验证码
登录的时候服务器返回一个验证码给客户端,请求时让客户端再次携带验证码给服务端进行验证。
2.判断请求来源
通过判断请求头的referer字段看客户端的域名是否是正确的,但是有一定的风险,攻击者可以通过node发送请求来伪造请求头。
3.添加token判断用户身份
3.V8引擎垃圾收集(node/js)
1)一个node进程内存结构
rss:总内存
external:存栈变量
heapTotal:堆内存
heapUsed:使用到的堆内存
2)垃圾回收
内存里的垃圾回收分为新生代(32m,存放临时变量)和老生代(1.4G)垃圾回收机制,垃圾回收主要针对堆区域,因为栈区域的空间很小。
1.新生代垃圾回收
新生代垃圾回收分为from和to两块区域,from里面放代码块,to里面为空,引擎会轮询from里面的变量,会把正在使用的变量
移到to来,然后清空from区域,接着from变成to区域,to变成from区域开始循环上面步骤。轮询多次后依然存活的变量会变移到
老生代区域。或者当to区域内存占用超过25%,那么变量会变移到老生代区域。
2.老生代垃圾回收
1)标记清除
标记活的变量,标记完后清除死的变量,问题是清除后会出现内存不连续的情况,后面如果要放一个大的对象无法放到内存碎片空间中。
2)标记整理
标记活的变量,然后把活的对象一起往左移到,死的对象往右移动,接着清除死的变量,不会造成内存碎片,但是操作时间久。
3)增量标记
标记清除和标记清理两种方式在进行是,程序是禁止操作的,所有增量标记是把标记清除和标记清理分为多次来进行,优化了用户体验。
4)总结:V8主要使用标记清除,等内存不够了在使用标记整理
3)引用次数(从根对象window开始计数)
引擎中有一张表专门来记录变量的引用次数。
架构-碎知识点笔记
最新推荐文章于 2024-11-09 15:12:54 发布