ssh

Results 80 comments of ssh

岛屿问题 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。 ``` 示例 1: 输入: 11110 11010 11000 00000 输出: 1 示例 2: 输入: 11000 11000 00100 00011 输出: 3 ``` 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/number-of-islands 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 ```js /** *...

# Tree-Shaking https://juejin.im/post/5bb8ef58f265da0a972e3434 rollup 生成的代码更简洁。 TS 的前提是 es module 的静态分析能力,cjs 太灵活无法做 TS rollup 自带 TS,而 webpack 需要借助 uglify 的能力。 ![image](https://user-images.githubusercontent.com/23615778/79463815-e3adf900-802b-11ea-8421-df5aa07eb860.png) 对于没有用到的函数,rollup 和 webpack 都能很好的去除掉。 IIFE 不会被 TS,因为它会立即执行,不能判断出内部是否有副作用。 `/*#__PURE__*/` 可以让一个立即执行函数被视为无副作用的 ```js...

# 事件机制 https://github.com/sl1673495/notes/issues/53

## 图解SSL http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html ![image](https://user-images.githubusercontent.com/23615778/81785098-6f824a80-9530-11ea-97fd-8d9f6f8f77c6.png) 在握手过程中,其实总共生成了三个随机数: 1. Client random 2. Server random 3. Premaster secret(会用服务器公钥加密) 3个注意点: 1. 生成对话密钥一共需要三个随机数。 2. 握手之后的对话使用"对话密钥"加密(对称加密),服务器的公钥和私钥只用于加密和解密"对话密钥"(非对称加密),无其他作用。 3. 服务器公钥放在服务器的数字证书之中。

# 浏览器工作原理版 http://blog.poetries.top/browser-working-principle/guide/part6/lesson36.html#%E7%AC%AC%E4%B8%80%E7%89%88%EF%BC%9A%E4%BD%BF%E7%94%A8%E5%AF%B9%E7%A7%B0%E5%8A%A0%E5%AF%86 ## 选择加密方式 ### 使用对称加密传输数据 虽然对称加密可以服务端和客户端商议加密方式后,加密 client random 和 server random 生成密钥,但是由于这个过程是明文传输的,第三方在中间拦截也可以看到这些信息,它也可以利用这些信息生成出同样的密钥。 ### 非对称加密传输数据 使用非对称加密直接来进行数据传输。这样是可以保证安全问题,浏览器用服务器公钥加密的数据中间人是无法解密的,因为他没有公钥。但是如果每次数据传输都这样加密和解密的话,效率太低。 ### 非对称加密会话,对称加密传输数据(HTTPS 采用) 1. 首先浏览器向服务器发送对称加密套件列表、非对称加密套件列表和随机数 client-random; 服务器保存随机数 client-random,选择对称加密和非对称加密的套件,然后生成随机数 service-random,向浏览器发送选择的加密套件、service-random 和公钥; 2. 浏览器保存公钥,并利用 client-random...

## 对网站证书校验的过程 1. CA 机构利用 hash 算法,把网站提供的明文信息生成「信息摘要」。 2. CA 机构利用自己的「私钥」,加密信息摘要,生成「数字签名」,放在证书中。服务端把这个证书返回给浏览器。 3. 浏览器利用同样的 hash 算法,把网站提供的明文信息生成「信息摘要 A」。 4. 浏览器利用 CA 机构的「公钥」,解密「数字签名」,生成「信息摘要 B」,如果信息摘要 A 和信息摘要 B 是一致的,说明这是 CA 证书认可的网站。

## 证书体系的弱点证书体系(PKI,Public Key Infrastructure) 虽然是目前整个网络世界的安全基础设施,但绝对的安全是不存在的,它也有弱点,还是关键的“信任”二字。如果 CA 失误或者被欺骗,签发了错误的证书,虽然证书是真的,可它代表的网站却是假的。 还有一种更危险的情况,CA 被黑客攻陷,或者 CA 有恶意,因为它(即根证书)是信任的源头,整个信任链里的所有证书也就都不可信了。这两种事情并不是“耸人听闻”,都曾经实际出现过。所以,需要再给证书体系打上一些补丁。 针对第一种,开发出了 CRL(证书吊销列表,Certificate revocation list)和 OCSP(在线证书状态协议,Online Certificate Status Protocol),及时废止有问题的证书。 对于第二种,因为涉及的证书太多,就只能操作系统或者浏览器从根上“下狠手”了,撤销对 CA 的信任,列入“黑名单”,这样它颁发的所有证书就都会被认为是不安全的。

## CSRF CSRF 英文全称是 Cross-site request forgery,所以又称为“跨站请求伪造”。是指黑客引诱用户打开黑客的网站,在黑客的网站中,利用用户的登录状态发起的跨站请求。简单来讲,***CSRF 攻击就是黑客利用了用户的登录状态,并通过第三方的站点来做一些坏事***。 ### 1. 自动发起 GET 请求 ![image](https://user-images.githubusercontent.com/23615778/81905482-58f2f680-95f7-11ea-86ea-3f55d03aa03c.png) 黑客将转账的请求接口隐藏在 img 标签内,欺骗浏览器这是一张图片资源。当该页面被加载时,浏览器会自动发起 img 的资源请求,如果服务器没有对该请求做判断的话,那么服务器就会认为该请求是一个转账请求,于是用户账户上的 100 极客币就被转移到黑客的账户上去了。 ### 2. 自动发起 POST 请求 ![image](https://user-images.githubusercontent.com/23615778/81905558-72943e00-95f7-11ea-8e3b-3b82ea5c3853.png) 在这段代码中,我们可以看到黑客在他的页面中构建了一个隐藏的表单,该表单的内容就是极客时间的转账接口。当用户打开该站点之后,这个表单会被自动执行提交;当表单被提交之后,服务器就会执行转账操作。因此使用构建自动提交表单这种方式,就可以自动实现跨站点 POST 数据提交。...

# 谷歌的安全专栏笔记 https://developers.google.com/web/fundamentals/security 关键字: 1. HTTPS 对传输中的数据进行加密 2. CSP 内容安全政策 3. 防止混合内容 ## 内容安全政策 CSP ### TL;DR 1. 使用白名单告诉客户端允许加载和不允许加载的内容。 2. 了解可使用哪些指令。 3. 了解这些指令接受哪些关键字。 4. 内联代码和 eval() 被视为是有害的。 5. 向服务器举报政策违规行为,以免执行这些行为 ###...

完全理解 React Fiber http://www.ayqy.net/blog/dive-into-react-fiber/#articleHeader0