今天看了 jsliang 大佬关于网络安全的文章,为了加深一下印象,自己动手写一下。
主要参考文章:网络安全 ——— jsliang
XSS攻击
XSS(Cross Site Script)跨站脚本攻击,指的是向网页注入恶意代码,并对网页进行篡改。在用户浏览时,从而获取用户隐私数据的一种攻击方式。一般为 JavaScript 。

  • 窃取 Cookie 信息,模拟用户进行登录,然后进行转账等操作
  • 使用 addEventListener 监听用户行为,监听键盘事件,窃取用户的银行卡密码等。并发送到攻击者的服务器
  • 通过修改 DOM 伪造假的登录窗口,欺骗用户输入用户名和密码等
  • 生成浮窗广告等
  • 修改 URL 跳转到恶意网站
  • ....

防御 :

  • 输入检查:对输入内容中的 script 和 iframe 等标签进行转义或者过滤
  • 设置 httpOnly(后端): 设置此属性可防止 JavaScript 获取 Cookie, 只能在 HTTP请求过程中使用 Cookie
  • 开启 CSP 白名单 :即开启白名单,可以阻止白名单意外的资源加载和运行 (参考:web安全csp白名单的弊端、开启CSP网页安全政策防止XSS攻击)

CSRF攻击
CSRF(Cross—Site Request Forgery) 跨站请求伪造。简单说一下自己的理解,不对的地方请指正。CSRF攻击主要是利用用户登陆过的网站生成的Cookie,也就是这个用户的凭证,操控用户,进行转账等有利于攻击者的行为。但并不是像XSS攻击一样窃取Cookie,攻击者不知道Cookie的内容,只是利用而已。 例子: 网站A为用户正常浏览的网站,网站B为攻击者的恶意网站。假设用户已经登录网站A获取到了Cookie,这时候用户打开网站B,这时候网站B运行恶意代码,请求访问网站A或者说网站A某个api(例如网站A的转账api),通常是在用户不知情的情况下。
防御:

  • 验证 Token:浏览器请求服务器时,服务器返回一个 token,之后每个请求都需要同时带上 token 和 Cookie 才会被认为是合法请求
  • 验证 Referer:通过验证请求头的 Referer 来验证来源站点,但请求头很容易伪造
  • 设置 SameSite:设置 Cookie 的 SameSite,可以让 Cookie 不随跨站请求发出,但浏览器兼容不一

具体实现和原理参考:CSRF攻击与防御
SQL注入
主要是通过往输入框里面输入 SQL语句,利用 SQL的语法识别机制,从而修改数据库实际上运行的SQL语句,以达到攻击者的目的
例如: (假设前端没有做用户名和密码的校验) 用户输入的用户名:Kite OR '1 = 1'-- 用户输入的密码:123456
预想执行的SQL语句:SELECT * FROM user WHERE username='Kite' AND psw='123456'
实际执行的SQL语句:SELECT * FROM user WHERE username='Kite' OR 1 = 1 --' AND psw='xxxx'
"--":是SQL的注释代码。也就是说 1 = 1 后面的代码无效。 结果就变成无论输入的用户名和密码是否正确,都可以登录。因为 1 = 1 肯定是为 true 。
防御:

  • 通过正则验证用户输入的内容是否包含引起隐患的字符
  • 一般由后端来处理。

流量劫持
DNS 劫持
建过站点的朋友应该都知道,需要域名解析,不然无法通过自己购买的域名访问自己的服务器。域名解析,也就是通过 DNS 服务器实现域名和服务器IP的映射,例如 http://kite1874.com 对应的 IP 为 127.0.0.1。你访问 http://kite1874.com 的时候,实际访问的是 127.0.0.1 这个IP地址对应的服务器。实际上输入 127.0.0.1 也可以正常访问站点。之所以需要使用域名进行访问,是为了方便记忆和SEO
DNS劫持,也就是通过篡改域名映射的IP,导致用户访问的网站,变成攻击者准备的恶意网站。
例如:

  • 篡改路由器 DNS 配置。
  • 篡改 Hosts 文件貌似也可以做到(自己脑补的)
  • 网络供应商可以修改,如果有意这样做的话。
  • ...

HTTP 劫持
大家都知道,HTTP 请求是明文的。而 HTTP 劫持主要是篡改请求的内容。例如:你打开一个网页,请求返回一个HTML文件,然后有意者修改这个HTML,往里面插了个小广告,然后再返回给你。广告还算小事,要是返回一个表单让你输入账号密码呢?你全然不知,还以为这是原来网站上的表单呢
防御:

  • HTTP 传输是明文,所以需要给它加密。也就是 HTTPS 协议。需要申请 SSL 证书。

来自阿怪自己的博客 —— XSS攻击、CSRF攻击、SQL注入、流量劫持(DNS劫持、HTTP劫持)—— 浏览器安全 - 阿怪的小破站

android 访问服务器sql_XSS 攻击、CSRF 攻击、SQL 注入、流量劫持(DNS 劫持、HTTP 劫持)—— 浏览器安全相关推荐

  1. 第三百九十二节,Django+Xadmin打造上线标准的在线教育平台—sql注入攻击,xss攻击,csrf攻击...

    第三百九十二节,Django+Xadmin打造上线标准的在线教育平台-sql注入攻击,xss攻击,csrf攻击 sql注入攻击 也就是黑客通过表单提交的地方,在表单里输入了sql语句,就是通过SQL语 ...

  2. WAF——针对Web应用发起的攻击,包括但不限于以下攻击类型:SQL注入、XSS跨站、Webshell上传、命令注入、非法HTTP协议请求、非授权文件访问等...

    核心概念 WAF Web应用防火墙(Web Application Firewall),简称WAF. Web攻击 针对Web应用发起的攻击,包括但不限于以下攻击类型:SQL注入.XSS跨站.Websh ...

  3. mysql注入带外通道攻击_防止SQL注入攻击的方法

    防止SQL注入攻击的方法 发布时间:2020-08-25 14:18:13 来源:亿速云 阅读:78 作者:小新 小编给大家分享一下防止SQL注入攻击的方法,相信大部分人都还不怎么了解,因此分享这篇文 ...

  4. mysql 主键 uniqo_优衣库某处SQL注入可导致移动平台被劫持

    漏洞概要 缺陷编号:WooYun-2014-073739 漏洞标题:优衣库某处SQL注入可导致移动平台被劫持 相关厂商:优衣库 漏洞作者:winsyk 提交时间:2014-08-25 10:08 公开 ...

  5. 网络(14)-Web站点如何防范XSS、CSRF、SQL注入攻击?

    一.XSS跨站脚本攻击 XSS跨站脚本攻击指攻击者在网页中嵌入客户端脚本(例如JavaScript),当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的,比如获取用户的Cookie ...

  6. 万字讲解9种Web应用攻击与防护安全。XSS、CSRF、SQL注入等是如何实现的

    OWASP(开放Web软体安全项目- Open Web Application Security Project) 是一个开源的.非盈利的全球性安全组织,致力于应用软件的安全研究.使命 是使应用软件更 ...

  7. 常见web攻击(sql注入,xss攻击,csrf攻击)

    sql注入攻击 危害 方式:通过表单提交加入特殊字符 如:' OR 1=1#' 防范:用django的ORM,就大可不必考虑这个问题,   如果自己写,要用正则和其他方式进行过滤 xss(Cross ...

  8. 常见的Web攻击方式:SQL注入、XSS跨站脚本攻击、CSRF跨站点请求伪造

    常见的Web攻击有SQL注入.XSS跨站脚本攻击.跨站点请求伪造共三类,下面分别简单介绍. 1 SQL注入 1.1 原理 SQL注入就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字 ...

  9. CSRF, XSS, Sql注入原理和处理方案

    CSRF 含义 CSRF(Cross-site request forgery)跨站请求伪造,也被称为"One Click Attack"或者Session Riding,通常缩写 ...

最新文章

  1. android 表示空字符串,Android Logcat获取空字符串时非常奇怪的行为
  2. Mysql练习题14-至少有5名直接下属的经理
  3. 成功解决mod = importlib.util.module_from_spec(spec)ImportError: DLL load failed: 找不到指定的程序。
  4. 给定三角形 ABC 和一点 P(x,y,z),判断点 P 是否在 ABC 内,给出思路并手写代码
  5. Nacos深入浅出(三)
  6. 数列求和(洛谷P5745题题解,C++语言描述)
  7. 计算机网络(1)TCP和UDP
  8. ARM Cortex-M0 原理与应用实践
  9. 让你的原创设计作品展示给世界|设计师的舞台
  10. php中padding,css中padding填充详解
  11. java求出遍历二叉树的路径,102. 二叉树的层序遍历
  12. CentOS7下Nginx 安装 Lua 支持
  13. 初学Rman 写的备份脚本
  14. l440加装固态硬盘ngff_[转载]Thinkpad E431装NGFF固态硬盘图文详解
  15. 2017年终总结,开始写博客的第一年
  16. 字节跳动内推码 春招 社招
  17. json.dumps()、json.laods()、demjson相关
  18. java技术不行有复试怎么办_复试答不上来怎么办?四个妙招搞定面试!
  19. Android 工程师必知必会的“ AOP知识 ”
  20. MySQL连接不了本地服务器原因

热门文章

  1. epoll边缘触发_4.2.3、epoll:水平触发与边缘触发
  2. 数学建模灵敏度分析_数学建模中的灵敏度分析,到底在分析什么?
  3. latex在论文中添加行号
  4. (一看就懂)傅里叶变换、拉普拉斯变换、Z变换、卷积的经典文章汇总
  5. MFC中给单文档程序添加背景图片
  6. NSIS脚本语言安装与编译
  7. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 21丨报告系统状态的连续日期【难度困难】​
  8. IDA Pro7.0 使用技巧 总结
  9. oracle中执行自带脚本,oracle自带脚本
  10. 如何将计算机加入到域环境中,如何在讲计算机加入一个WinXP的域环境