谈谈互联网安全

无论是IT从业人员还是普通用户都应该了解一下互联网安全,毕竟这关系到私人隐私。以下从9个方面谈谈互联网安全

1.撞库

其实很多网站都泄露过数据库,包括一些大的比如csdn、网易邮箱、携程、甚至包括很久之前的QQ都泄露过。
撞库就是拿这些已经泄露过的用户名+密码,去尝试在一系列别的网站登陆

应对策略:对于开发人员,换salt,换加密方式;对于普通用户,改密码。

2.模拟登陆

当你登陆一个网站的时候,其实是建立了一个session,也就是会话,会话数据是在服务器端保存。但是如何知道你是哪个用户呢,它会回传一个session_id保存在cookie里,用户每次登陆的时候都会随机生成的一个很长的随机session_id,黑客会通过一些工具(比如抓包工具)来获取你浏览器的session_id来模拟登陆你的账号,达到窃取隐私的目的。

3.抓包

现在绝大多数网站还是使用的http协议,而http协议本身又是不加密的,所以在你访问一个网站的时候,它的request和response都是明文的,这样黑客就能抓到你request和response的内容,然后进行各个字段的分析,就能拿到它有用的东西,然后去破解你,模拟你的登陆。
解决办法就是用https协议,这个s就是secure的意思,它通过SSL/TLS协议把request和response的内容做了一些加密,并且具有校验机制和证书,防止被第三方篡改或者冒充。当然有一些https加密方式已经被破解了,需要更新最新的加密包。之前的SSL低版本漏洞和心脏滴血漏洞都是https协议被破解的情况。

应对策略:网站换https协议、及时更新依赖的包

4.跨站脚本攻击 - XSS

比如有的网站的留言板没有禁用掉html格式的代码,黑客用一段url的脚本留言,这个url的?后面跟上用户的cookie信息。任何一个人只要打开了这个页面就会把自己的cookie信息上传到黑客的服务器上,黑客就拿到你的cookie进行分析,要知道session_id是存在cookie里的,于是黑客就能利用你的session_id进行模拟登陆,来窃取一些信息了

应对策略:所以这些留言板和用户可输入的地方都要对html语法进行过滤

5.DDoS攻击

黑客会通过各种手段掌握大量空闲的计算机,俗称肉鸡,去对某一个网站发起请求。把你的网站比作银行柜台的话,黑客用一万台肉鸡对你的网站发起请求,就意味着一万个人来到你的银行柜台找柜员Bala一些有的没的,但是后面想取钱的人就挤不进来,这样子银行柜台被塞满了,也就意味着你的网站瘫痪了。
过去都是针对一些安全防范做得不太好的网吧植入木马程序,最近出现个新的情况,用手机当作肉鸡,特别是root后的手机,一旦root后,会很容易给第三方软件掌握手机的系统权限,那么就相当于手机也被装了木马。
DDos目前没有什么很好的措施进行防范,因为都是模拟的真实用户,而且来源地理位置IP也是很分散的,很难去过滤掉这种非法请求,所以这种可能需要找第三方安全公司进行策略上的清洗,也就是流量的清洗,他们会识别这些请求有什么非法的地方,然后吧这些请求过滤掉。具体的做法就是把你网站的域名解析到安全公司的IP上,他的服务器把过滤后的合法请求再转发给你自己的网站服务器上,这样大量的DDos请求就被他们给过滤掉了。

6.SQL注入

造成SQL注入的原因是因为程序没有有效过滤用户的输入,使攻击者成功的向服务器提交恶意的SQL查询代码,程序在接收后错误的将攻击者的输入作为查询语句的一部分执行,导致原始的查询逻辑被改变,额外的执行了攻击者精心构造的恶意代码。

应对策略:DAO层包装,在后台作为参数传过去,处理特殊字符掉

7.弱密码

服务器密码、数据库密码等一些配置文件应该使用字母数字大小写混合的复杂长密码。还有,不要把这些配置文件上传到开源的版本控制系统中去了。去github上搜索关键字password,简直不要太多。
再说说用户密码的加密方式,虽然很多网站采用的MD5的加密方式加密了用户的密码,但是很多黑客手里都有彩虹表,左边是原文密码,右边是MD5后的密码。如果用户的密码异常简单或很常见的话,就算是MD5加密后的密码,也能很容易反查出原文密码。

应对策略:换较难破解的加密方式,

一些常见的密码加密算法,由破解难度从低到高排列:

  • 明文储存
  • hash md5
  • md5 + salt
  • bcrypt
  • PBKDF2

8.服务器漏洞

一般都是开发人员疏忽造成的,比如说权限控制没做好,没考虑周全等原因都会造成服务器漏洞,给黑客可乘之机。

应对策略:code review

9.服务器安全

之前写过一篇关于服务器安全的文章《服务器安全之SSH设置》

  • 用linux iptables软件防火墙服务
  • 尽量把不用的一些端口给关掉,数据库的默认端口也要给改掉(想想之前的redis漏洞)
  • 软件及时更新,打安全补丁

总结

从安全角度来讲,永远是道高一尺魔高一丈,黑客永远会找到更先进的攻击方法。比如说去年有人也说过京东,他虽然用的https协议,但是是SSL 2.0的加密版本,早就被破解了,但是还有无数的网站连https都没用做。毕竟京东是一家上市公司,大家难免对他的要求都比较高。对于一般的互联网公司而言,可能是个循序渐进的过程,一开始把一些较大的漏洞给补上,随着公司的扩大,预算的增加,不断提高自己的安全水准,或者请一些安全专家。

对于一般用户而言就是尽量保证自己每个网站的密码都不相同,一些涉及到隐私的重要网站,比如说一些购物网站、网银一定要使用复杂的密码,然后每隔一段时间就换一次密码。永远记住一句话,不是你的账号没泄露,而是你的账号没有价值。