前端杂记(五)

2019 / 11 / 03

前端常见的Web攻击

1. CSRF (Cross-site Request Forgery 跨站请求伪造)

在A网站登录的时候访问恶意网站B的时候B网站会伪造A网站的用户身份发起请求。这个是利用浏览器在户登录的时候cookie会被多个窗口共享的问题。使用token鉴权会更加安全,可以避免这个问题。

2. XSS (Cross-site Script 跨站脚本攻击)

浏览器可能会读取url, 表单或者后端数据库上的数据写到页面上,这个时候当这些数据是脚本代码的话,就可能会被执行。要转义用户的输入,同时也要注意在输出的时候。

3. SQL注入

用户提交的输入做当作SQL的执行,从而导致数据库出问题,后端任何时候都不要相信用户的输入。

4. DDoS (Distributed Denied of Server 分布式拒绝服务)

利用目标网络的缺陷,不断的发起请求,消耗目标网络的资源,导致服务器处理速度变差。

5. SYN 泛洪攻击

这是DDoS的一种,用伪造的随机IP地址不断的建立TCP连接,但服务器返回确认码ACK的时候会发不到这个随机IP上,所以只能进入等待状态,同时也会重发ACK直到超时为止,大量的半连接状态会导致系统运行缓慢,网络拥堵。

git rebase

git rebase是用来管理commit的。

修改最近的commit

git rebase -i HEAD~4

会进入一个vim编辑界面,显示最近的四个commit,下边的注释是七种不同的操作。

pick 5f47f06 fix: 代码调整
pick 471a51c fix: 代码调整1
pick 0fd68d3 fix: 代码调整2
pick 4e083ee fix: 代码调整3

# Rebase 0163bbd..4e083ee onto 0163bbd (4 commands)
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit

现在需要把四个commit合并为一个,并且修改一下内容,可以把后三个的操作改为squash,然后第一个pick改为reword。

r 5f47f06 fix: 代码格式调整
s 471a51c fix: 代码调整1
s 0fd68d3 fix: 代码调整2
s 4e083ee fix: 代码调整3

然后wq保存,进入commit编辑状态,可以修改被squash的commit。然后再保存,就能发现自己的commit变成一个了。

注意,git 不可以修改当前HEAD之前的commit,也就是被提交的commit,如果改的时候出现问题,还有一些其他的命令可以帮助我们操作

# 放弃操作
git rebase --abort

# 重新编辑
git rebase --edit-todo

# 继续操作
git continue

拉取master代码的时候如果加上 -r 就像下边这样

git pull origin master -r

可以让当前所有的commit顺序基于master重新排序,可以让分枝图变得更加干净。

PureComponent做了什么

PureComponent其实没做什么,他给Component加了一层shouldComponentUpdate,对props进行了浅比较,这样component的属性如果父组件重新渲染但是属性不变时就不会发生重新渲染。

ReactDOM的hydrate,render和Portal

hydrate,翻译过来是混合,用于渲染混合容器,什么是混合容器,就是他即是服务端html字符串的容器,也是前端渲染的根DOM节点。主要用在服务端渲染的时候,在客户端会把服务端渲染好的html字符串和React Fiber节点关联起来。而render用于前端渲染React Virtual DOM到根DOM节点。

Portal方法是用来在组件渲染的时候,把自己渲染到固定的dom中。

WeakMap和Map及WeakSet和Set的区别

WeakMap和Map都是存放键值对,区别主要有

1. WeakMap的键必须是引用类型,比如对象数组,而Map都可以

2. WeakMap的值可以被垃圾回收机制回收,Map不可以

3. WeakMap不能遍历

WeakSet和Set是存放集合的,区别主要有

1. WeakSet不能存放基本类型,Set都可以

2. WeakSet的值可以被垃圾回收机制回收,Set不可以

3. WeakSet不能遍历

总的来说就是存放的数据类型和是否可以被垃圾回收机制处理,WeakSet或者WeakMap可以很好的处理一些缓存DOM节点的问题,同时也能保证DOM被回收,不会造成内存泄漏。

嗨,请先 登录

加载中...
(๑>ω<๑) 又是元气满满的一天哟