浅谈Web应用系统安全 - 骇客攻防战

跨站脚本攻击(XSS)

攻击

XXS就是透过网页没有适当筛选、处理文字造成的漏洞
例如有用户将<script>alert()</script>输入进讯息输入栏位然後发给别人
要是没有严格筛选就会在收到讯息者的浏览器执行该脚本
甚至可能将cookies等敏感资讯发送给骇客
其他XXS注入方法还有利用网址进行注入<img>标签的onerror参数等等

防御

  • 非必要就避免使用documnt.wirte、element.innerHTML,以innerText取代较佳
  • 使用第三方套件过滤文字
  • 设定CSP网页白名单
  • 设定cookies为HttpOnly

跨站请求伪造(CSRF)

攻击

最常见的攻击方式有两种
第一种是编造恶意的网址利用开启者的身分对某API端点发送GET请求
甚至还可以利用<img>、<video>等标签的src发送
第二种是在骇客自己的网站建立一个假表单
并且当使用者按下送出後将资料发送到目标的API端点
以利用使用者身分进行POST请求

防御

  • 可能改变服务器状态的请求使用POST发出,并判断其referer和orign
  • 使用CSRF符记

XML外部单元体(XXE)

攻击

大部分做法是将含有外部单元体标记的XML物件发送到服务器
使服务器读取之後回传含有外部单元体内容的资讯
可能让服务器泄漏机密档案
类似这样的XML:

防御

  • 正确的设定XML解译器
  • 如果可以就使用其他资料型态(如JSON)

注入漏洞

攻击

主要分为SQL注入、程序码注入和命令注入三类

SQL注入就是最经典的一种攻击手段
例如某个网站的登入验证SQL查询代码为
strSQL = "SELECT * FROM users WHERE (name = '" + userName + "') and (pw = '"+ passWord +"');"
若恶意注入
userName = "1' OR '1'='1";
passWord = "1' OR '1'='1";
则可不用帐号密码登入网站
更严重还可能资料库损毁、泄漏等等後果

程序码注入和命令注入做法概念也差不多
只是注入在不同的地方
这里就不多做说明了

防御

  • 遵循最小权限原则,只提供给其能完成工作的所需权限
  • 过滤非法字元
  • 避免网站打印出SQL错误资讯

阻断服务(DoS)

攻击

若系统内有编写不佳的Regex
或者较消耗系统性能的程序逻辑
只要攻击者对该API端点大量发送请求就很容易达到攻击目的
通常会造成服务器崩溃、效能大幅下降等

还有DDos(分散式阻断服务攻击)也是Dos攻击的一种
由一个骇客发起
让大范围的网路机器人、殭屍网路或任何已经被操控的连网装置对一台服务器发送大量垃圾请求
一样会导致服务器崩溃、效能大幅下降等

防御

  • DoS只要把程序逻辑、Regex搞好就好了
  • DDoS的部分可以...
    • 过滤异常流量
    • 限制异常IP发出的请求
    • 提升设备性能、增加频宽

<<:  计算机概论 - 资料抽象化 data abstractions

>>:  【C++】Number Random

DAY21-EXCEL统计分析:单因子完全随机集区实例

某间面包店的面包师傅想研究不同配方做出的面包所销售出的差异,但依照部烤箱的不同温度又会有所不同,故想...

IT 铁人赛 k8s 入门30天 -- day13 Deploying Stateful Apps with StatefulSet

前言 今天主要会介绍 StatefulSet 以及比较其与 Deployment 的不同 State...

企划实现(3)

企划发想过程 第一步 寻找需求 在一个企划的发想初期最先要做的事是找到市场,当你找到了市场才能继续做...

Day3 条件判断

今天来学学Vue里面的判别式v-if 跟v-show 1.v - if 在这里我们将条件设定为Sho...

如何报考CISSP?

CISSP考上心得 CISSP简介 CISSP是一个由美国(ISC)² 所颁发的资安证照,全名是C...