01 安全基础

ARP (Address Resolution Protocal), 当被攻击服务器向网络发送网关IP地址的MAC请求(ARP请求)时, 攻击者会抢先返回伪造的ARP应答,来冒充网关,从而截获所有与服务器的通信内容,ARP攻击有一个限制条件,就是要和被攻击的服务器在同一个物理网段内.

钓鱼攻击: 创建一个和原网站非常像的网站, 通过邮件链接等发送给用户,诱骗用户访问这个假网站, 并在假网站上输入用户名和密码等个人信息

DNS 攻击: 通过对DNS服务器的攻击来替换DNS的配置

好的产品

  • 有效解决问题
  • 用户体验好
  • 高性能
  • 低耦合
  • 易于扩展与升级

Security by default 原则(黑名单, 白名单思想)

比如, 制定防火墙的网络访问控制策略时, 如果网站只是提供 Web服务,那么正确的做法是只允许服务器的80和443端口对外提供服务,屏蔽除此之外的其他端口,这是白名单的做法;如果使用黑名单,则可能出现问题,假设黑名单的策略是:不允许SSH端口对internet开发,那么就审计22端口是否开放了internet, 但是在实际工作中,经常发现有的工程师为了偷懒或图方便,私自改了SSH的监听端口,比如把SSH的端口从22改成了2222,从而绕过了安全策略。

黑名单: 关闭什么端口. (在黑名单的都关闭)

白名单: 只打开什么端口. (在白名单的都打开)

最小权原则

不要过度授权, 比如在 linux 系统中,比较良好的操作习惯是用普通账户登录,在执行需要 root 权限的操作时,再通过 sudo 命令完成.

纵深防御原则

在不同的层面设计安全策略及实施方案(如果一旦通过防火墙进入了 application package之后怎么办)

要从不同层面,不同角度做安全策略,而不是同样的安全策略在多地重复使用。

所以,我们要考虑的有, web应用安全, OS系统安全, 数据库安全, 网络环境安全 等. 要设计不同的方案,共同组成防御体系.

数据和代码的分离原则

数据和代码分离原则广泛应用于因为“注入” 引发的安全问题.

<html>
    <body>
        $var
    </body>
</html>

举例, 上述代码中 $var 是用户控制的数据, 其他的是代码, 但是如果这个$var变量的内容是 <script src=http://adx></script>

解析脚本的过程是由浏览器执行, 这个脚本就会被执行. 根据数据和代码分离原则, 应该对数据片段 $var 进行安全处理,可以使用过滤,编码等手段

不可预测原则

对攻击者来说,想要攻击的比如数据,是不可预测的,

不可预测性能有效的对抗基于篡改,伪造的攻击

比如, 有一个文章库, 文章的序号是id 按照升序排列, id=1000, id2=1002, id=1003... 类似这种, 攻击者很容易就删除了所有的文章.

for (i=0; i<100000; i++) {

    delete(url+"?id="+i)

}

但是, 如果文章的id是不可预测的,想删除所有的文章就有些困难了. 比如 id=1232, id2=asdff, id3=ekresl

比如在 CSRF 防御中, 通常会使用一个 token 来进行有效防御.

猜你喜欢

转载自www.cnblogs.com/moveofgod/p/12360194.html