极客时间-左耳听风阅读笔记
经典系列,推荐!欢迎扫描学习!
1. 程序员如何用技术变现(上)
本文主要讲述了作者开始接触程序到现在的一些经历。从最开始在学校帮老师做东西,到后来公司请他做培训。他通过知识帮别人解决问题,来赚取报酬。一个人能不能技术变现,主要在于你能不能帮别人解决问题。尤其是你能帮别人解决别人解决不了的问题,这个时候你做的东西才更有价值。别人也更愿意付给你报酬。如果你会的,别人都会,那其实没有太大的意义。
2. 程序员如何用技术变现(下)
1)千里之行,积于跬步:leetcode练习,大话数据结构学习,极客课程,架构师之路,英文阅读能力
2)关注有价值的东西:关于社会需求,关于技术趋势。多关注大公司JD要求,熟悉流行技术。
3)找到能体现价值的地方:在一家能高速发展的公司中,技术人员的价值可以达到最大化。
4)动手能力很重要:多动手实践
5)关注技术付费点:一个是帮别人挣钱的地方,一个是帮别人省钱的地方
6)提高自己的能力和经历:大公司
7)找到有价值的信息源:英文阅读能力,谷歌搜索
8)输出观点和价值观:博客,关注公司遇到的问题
9)朋友圈很重要
并不是社会不尊重程序员,只要你能帮上大忙,就一定会赢得别人的尊重。
会挣钱的人,一定是会投资的人。最宝贵的财富并不是你的钱,而是你的时间。你把你的时间投资在哪些地方,就意味着你未来会走什么样的路。所以,利用好你的时间,投资到有意义的地方。
3. Equifax信息泄露始末:
本文主要讲了Equifax公司由于没有及时修复漏洞,导致数据泄露。这个漏洞已经由官方在网上公布了2个月,但Equifax公司一直没关注、没处理。结果被黑客利用,窃取大量数据。
选择一个框架的时候,一定要关注这个框架的漏洞多不多。同时关注官方警告,及时更新框架版本。
4. 从Equifax信息泄露看数据安全:
1)数据泄露攻击是怎样实现的?
1. 利用程序框架或库的一直漏洞。
2. 暴力破解密码。利用密码字典库或是已经泄露的密码来撞库
3. 代码注入。利用程序员代码的安全问题,入SQL注入、XSS攻击(Cross Site Script,跨站脚本攻击)、CSRF攻击(Cross Site Request Forgery,跨站请求伪造)等取得用户权限。XSS与CSRF攻击
4. 利用程序日志不小心泄露的信息。
5. 社会工程学。RSA被攻击,第一道防线是人--RSA的员工。只有员工的安全意识增强了,才能抵御此类攻击。其他的钓鱼攻击也属于此类。
6. 只有一层安全。Equifax只是被黑客攻破了管理面板和数据库,就造就了数据泄露。显然这样只有一层安全防护是不够的。
7. 弱密码。Equifax数据泄露事件绝对是管理问题。至少,密码系统应该不能让用户设置如此简单的密码,而且还要定期更换。最好的额方式是通过数据证书、VPN、双因子验证的方式来登录。
8. 向公网暴露了内部系统。在公司网路管理上出现了非常严重的问题。
9. 对系统及时打安全补丁。监控业内的安全漏洞事件,及时作出响应,这是任何一个有高价值数据的公司都需要干的事
10. 安全日志被暴露。安全日志往往包含大量信息,被暴露是非常危险的。携程的 CVV 泄露就是从日志中被读到的。
11. 保存了不必要保存的用户数据。
12. 密码没有被合理地散列。以现代的安全观念来说,以明文方式保存密码是很不专业的做法。进一步的是只保存密码的散列值(用安全散列算法),LinkedIn 就是这样做的。但是,散列一则需要用目前公认安全的算法(比如 SHA-2 256),而已知被攻破的算法则最好不要使用(如 MD5,能人为找到碰撞,对密码验证来说问题不大),二则要加一个安全随机数作为盐(salt)。LinkedIn 的问题正在于没有加盐,导致密码可以通过预先计算的彩虹表(rainbow table)反查出明文。这些密码明文可以用来做什么事,就不好说了,撞库什么的都有可能了。对用户来说,最好是不同网站用不同密码。
2)为了避免被攻击,对于使用了开源或闭源的支持性程序库的软件产品或服务,建议如下的 5 条最佳实践。
1. 理解你的软件产品中使用了哪些支持性框架和库,它们的版本号分别是多少。时刻跟踪影响这些产品和版本的最新安全性声明。
2. 建立一个流程,来快速地部署带有安全补丁的软件产品发布版。自动化测试来回归老的功能,保证版本兼容。
3. 所有复杂的软件都有漏洞。不要基于“支持性软件产品没有安全性漏洞”这样的假设来建立安全策略。
4. 建立多个安全层。就算表示层被攻破,也不会直接提供出重要(或所有)后台信息资源的访问权。
5. 针对公网资源,建立对异常访问模式的监控机制。现在有很多侦测这些行为模式的开源和商业化产品,一旦发现异常访问就能发出警报。
3)技术上还有哪些安全做法?
1. 隔离安全级别高的数据,所谓安全级别非常高的地方,即这个地方需要有各种如安全审计、安全监控、安全访问的区域。
2. 敏感数据只入不出。通过提供服务接口来让别的系统只能在这个区域内操作这些数据,而不是把数据传出去,让别的系统在外部来操作这些数据。
举个例子,用户的手机号是敏感信息。如果有外部系统需要使用手机号,一般来说是想发个短信,那么我们这个掌管手机号数据的系统就对外提供发短信的功能,而外部系统通过 UID 或是别的抽像字段来调用这个系统的发短信的 API。信用卡也一样,提供信用卡的扣款 API 而不是把卡号返回给外部系统。
3. 用户加密的算法一定要采用非对称加密的方式,而且还要加上密钥的自动化更换,比如:在外部系统调用 100 次或是第一个小时后就自动更换加密的密钥。这样,整个系统在运行时就完全是自动化的了,而就算黑客得到了密钥,密匙也会过期,这样可以控制泄露范围。
4. 数据也是需要加密存放的,而加密使用的密钥则需要放在另外一个区域中。被加密的数据和用于加密的密钥是由不同的人来管理的,有密钥的人没有数据,有数据的人没有密钥
5. 用户需要更新密钥时,需要对用户做身份鉴别,可以通过双因子认证,也可以通过更为严格的物理身份验证。例如,到银行柜台拿身份证重置密码。
6. 每当这些关键信息传到外部系统,需要做通知,最好是通知用户和自己的管理员。并且限制外部系统的数据访问量,超过访问量后,需要报警或是拒绝访问。
当黑客的投入和收益大大不相符时,黑客也就失去了入侵的意义。
所谓的安全方案基本上来说就是能够把这个风险控制在一个很小的范围。对于在这个很小范围出现的一些数据安全的泄露,我们可以通过“风控基金”来做业务上的补偿,比如赔偿用户损失,等等。因为从经济利益上来说,如果风险可以控制在一个——我防范它的成本远高于我赔偿它的成本,那么,还不如赔偿了。