Cyber Attacks 的防护以及常见方式

235 阅读5分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第12天,点击查看活动详情

网络攻击,这次词汇对于程序员来说,很常见了,但是很多人仅限于听过,具体场景是什么,会造成什么影响,就不知道,下面由我来授道解惑吧!

       网络攻击(Cyber Attacks,也称赛博攻击)是指针对计算机信息系统、基础设施、计算机网络或个人计算机设备的,任何类型的进攻动作。对于计算机和计算机网络来说,破坏、揭露、修改、使软件或服务失去功能、在没有得到授权的情况下偷取或访问任何一计算机的数据,都会被视为于计算机和计算机网络中的攻击。

       网络攻击,一般分为主动攻击和被动攻击,主动攻击会导致某些数据流的修改和虚拟数据流的产生,而被动攻击就比较隐秘,在攻击时,攻击者不会对数据做任何的修改,而是在未经用户同意的情况下获得用户设备的各种数据,随着时代的进步,网络攻击十分频繁,但是防止网络攻击的方式有很多,设备自带的很多软件就可以阻止攻击者的侵入了,例如360安全卫士,腾讯安全管家(电脑管家),火绒(这个可以用一下,蛮好用的),金山毒霸等等。

       对于程序员来说,怕被攻击的原因就不一样了,前端怕的是被攻击后页面数据丢失,导致页面崩盘,后端主要还是怕服务器被攻击到,被攻击者拿到数据,这种事故是很严重的。

       有了这些对于网络攻击的基本认识,下面来了解下常见的Web攻击方式以及防护的方法吧!

1.因输出值转义不完全引发的安全漏洞

1.1 跨站脚本攻击(XSS)

     XSS(cross site scripting)攻击指的是攻击者往Web页面里插入恶意html标签或者javascript代码。

防范措施:

  1. 对于敏感的cookie信息,使用HttpOnly,使document对象中找不到cookie。
  2. 对于用户输入的信息要进行转义。

1.2 SQL注入

       通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

防范措施:

  1. 永远不要信任用户的输入,要对用户的输入进行校验,可以通过正则表达式,或限制长度,对单引号和双"-"进行转换等。
  2. 永远不要使用动态拼装SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询存取。
  3. 永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
  4. 不要把机密信息明文存放,请加密或者hash掉密码和敏感的信息。

1.3 OS命令注入攻击

       OS 命令注入攻击(OS Command Injection)是指通过 Web 应用,执行非法的操作系统命令达到攻击的目的。只要在能调用 Shell 函数的地 方就有存在被攻击的风险。

防范措施:

  1. 后端对前端提交内容进行规则限制。
  2. 在调用系统命令前对所有传入参数进行命令行参数转义过滤。
  3. 不要直接拼接命令语句,借助一些工具做拼接、转义预处理。

1.4 HTTP头部注入攻击

      通过在响应首部字段插入换行,添加任意响应首部或主体的一种攻击

防范措施: 使用https,对http报文做加密、认证及完整性保护,防止篡改。

2.因设置/设计缺陷引发的安全漏洞

      错误设置Web服务器等引发的安全漏洞

影响:

  1. 强制浏览器:在公开目录下浏览非公开文件。
  2. 不正确的错误消息处理:Web应用的错误信息包含攻击者有用的信息。
  3. 开放重定向:对任意URL重定向跳转到恶意网站上。

3.因会话管理疏忽引发的安全漏洞

1. 会话劫持

       通过某种手段拿到用户的会话ID,伪装用户

2. 会话固定攻击

       强制用户使用攻击者指定的会话ID

3. 跨站请求伪造(CSRF)

       跨站请求伪造(CSRF,Cross-site request forgery)是另一种常见的攻击。攻击者通过各种方法伪造一个请求,模仿用户提交表单的行为,从而达到修改用户的数据,或者执行特定任务的目的。为了假冒用户的身份,CSRF攻击常常和XSS攻击配合起来做,但也可以通过其它手段,例如诱使用户点击一个包含攻击的链接

防范措施:

  1. 采用POST请求,增加攻击的难度.用户点击一个链接就可以发起GET类型的请求。而POST请求相对比较难,攻击者往往需要借助java才能实现。
  2. 对请求进行认证,确保该请求确实是用户本人填写表单并提交的,而不是第三者伪造的.具体可以在会话中增加token,确保看到信息和提交信息的是同一个人。

4.其他的安全漏洞

  1. 密码破解

    • 穷举法:暴力破解,对系统进行试错。
    • 字典攻击:枚举字典中的密码。
    • 对加密的密码进行破解。
  2. 点击劫持:利用透明的按钮或链接做成陷阱,覆盖在web页面上,诱惑用户点击

  3. DOS攻击:让运行中的服务呈现停止状态