SQL注入

  SQL注入是以用户的输入作为sql语句的一部分,如后端接收到用户的请求数据后,不经过数据转义,就把数据拼接到SQL中执行,容易导致SQL的语义被篡改,即受到攻击了。

  解决办法是对接收的数据进行转义即可,如果使用框架,则基本不用考虑sql注入攻击了,框架已经实现了相关处理了,能保证安全。

XSS

  页面被插入恶意JS,导致页面的逻辑被篡改。常见的篡改方式有:使页面自动跳转到另一个地址、修改超链接的地址、修改页面的展示内容等。

  插入恶意的JS:服务器接收到用户的输入,将输入数据保存起来,然后供其他地方展示。如果用户输入的是一段JS脚本,则其他地方展示时,将文本渲染到html中,文本是脚本的时候,脚本会马上执行,这就实现了插入脚本的目的。

  防范措施:对于页面要渲染的数据,都要经过JS转义后再显示出来,这样一来,即使出现恶意脚本,被转义后也不会执行了。

  到这里可以发现,XSS和SQL注入本质都是一样,只不过前者是针对JS,而后者是针对SQL,解决办法都是在使用数据的时候,都转义即可避免。

CSRF

  本质就是页面的src元素可以跨域,而且会带上这个域名下的cookie,从而使用了用户身份去做一些不好的事情。

  测试如下:

  我现在登录某网站了,登录成功了,网站给我一个cookie身份凭证,如下:

  

  然后再任意页面的控制台,执行如下:

  【之所以这么做是因为懒得写页面了,以下方式虽然不常规,但足以模拟用户打开了其他页面的情况了并且发出了跨域请求】

  

  页面就发出了一个请求(自动包含用户的身份信息了,即之前登录的cookie):

  

  以上可以看出,在用户不知情的情况下,他只是访问了一个其他页面,他的身份信息就被盗用了。所以简单cookie方式不能代表就是用户本人的操作,因为这是浏览器的特征:发出请求的同时,会自动带上对应域的cookie。

防范措施

  1.后端判断refer头是否与当前服务器地址一致。因为客户端发来的请求,可以手动修改请求里面的refer头,所以不完全可信,这个方式不行。

2.发送请求前,将cookie手动读取出来,放在请求参数(GET)或放在数据体(POST)中,后端读取这个额外的数据来判断用户的身份。这个方式能行,是因为JS没办法操作第三方的cookie,也就是说攻击者没办法将cookie数据移动到请求参数或数据体中。

针对iframe

  以上提到一个可行的方式是基于同源协议,即不能跨域。如使用iframe打开一个第三方的页面,是能打开,但是没办法通过对应的iframe.contentWindow对象来操作页面数据,这个window对象是能获取到,只不过这个对象没有数据,这就起到了保护作用。举个例子,跨域访问window对象,里面没有数据

而正常情况下:

  但是对于客户端程序,如nw.js,里面就没有同源限制,也就是说如果在nw中嵌入一个iframe,则js是可以跨域访问数据的,即所有cookie都能随意被读写。所以登录客户端时(非浏览器),一定要慎重! 

Web安全XSS、CSRF和SQL注入的更多相关文章

  1. Nikto是一款Web安全扫描工具,可以扫描指定主机的web类型,主机名,特定目录,cookie,特定CGI漏洞,XSS漏洞,SQL注入漏洞等,非常强大滴说。。。

    Nikto是一款Web安全扫描工具,可以扫描指定主机的web类型,主机名,特定目录,cookie,特定CGI漏洞,XSS漏洞,SQL注入漏洞等,非常强大滴说... root@xi4ojin:~# cd ...

  2. Web站点如何防范XSS、CSRF、SQL注入攻击

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

  3. 程序员常用的3大Web安全漏洞防御解决方案:XSS、CSRF及SQL注入(图文详解)

    https://blog.csdn.net/ChenRui_yz/article/details/86489067 随着互联网的普及,网络安全变得越来越重要,程序员需要掌握最基本的web安全防范,下面 ...

  4. WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案(转)

    对web安全方面的知识非常薄弱,这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,希望大家多多提意见. 对于防止sql注入发生,我只用过简单拼接字符串的注入及参数化查询,可以说没什么好经验,为避 ...

  5. WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案

    对web安全方面的知识非常薄弱,这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,希望大家多多提意见. 对于防止sql注入发生,我只用过简单拼接字符串的注入及参数化查询,可以说没什么好经验,为避 ...

  6. 安全漏洞XSS、CSRF、SQL注入以及DDOS攻击

    随着互联网的普及,网络安全变得越来越重要,程序员需要掌握最基本的web安全防范,下面列举一些常见的安全漏洞和对应的防御措施. 0x01: XSS漏洞 1.XSS简介 跨站脚本(cross site s ...

  7. 一文搞懂│XSS攻击、SQL注入、CSRF攻击、DDOS攻击、DNS劫持

    目录 XSS 攻击 SQL 注入 CSRF 攻击 DDOS 攻击 DNS 劫持 XSS 攻击 全称跨站脚本攻击 Cross Site Scripting 为了与重叠样式表 CSS 进行区分,所以换了另 ...

  8. web应用程序安全攻防---sql注入和xss跨站脚本攻击

    kali视频学习请看 http://www.cnblogs.com/lidong20179210/p/8909569.html 博文主要内容包括两种常见的web攻击 sql注入 XSS跨站脚本攻击 代 ...

  9. 【转载】XSS攻击和sql注入

    XSS攻击: https://www.cnblogs.com/dolphinX/p/3391351.html 跨站脚本攻击(Cross Site Script为了区别于CSS简称为XSS)指的是恶意攻 ...

随机推荐

  1. Android近场通信---NFC基础(二)(转)

    转自 http://blog.csdn.net/think_soft/article/details/8171256 应用程序如何调度NFC标签 当标签调度系统完成对NFC标签和它的标识信息封装的In ...

  2. TTM-To the moon

    传送门 查询历史版本,回到历史版本,这个题目显然是用主席树,好像就没了! 但是这里的修改是区间修改,众所周知主席树的空间复杂度是\(nlog(n)\)的,区间修改会导致主席树的开点到达一个相当恐怖的数 ...

  3. Vuex目录结构推荐

    目录结构如下: - src - store // 在src目录下 新建一个store文件夹 - mutations.js // mutations - mutaions_types.js // mut ...

  4. 洛谷P2514||bzoj2426 [HAOI2010]工厂选址

    洛谷P2514 bzoj2426 其实是个简单的贪心,然而不适合在脑子不清醒的时候做...看不懂题意续了1个小时 很容易发现应该枚举新建哪个发电厂,对于这种方案就是取其中b吨煤运到原来发电厂,取剩下( ...

  5. SpringMVC-高级参数绑定

    绑定数组 需求 在商品列表页面选中多个商品,然后删除. 需求分析 此功能要求商品列表页面中的每个商品前有一个checkbook,选中多个商品后点击删除按钮把商品id传递给Controller,根据商品 ...

  6. 转 PHP 正则表达式 以及案例

    2.Perl兼容的语法扩充 Perl兼容的正则表达式的模式类似于Perl中的语法,表达式必须包含在定界符中,除数字.字母.反斜线外的任何字符都可以作为定界符.例如,表达式’/^(?i)php[34]/ ...

  7. 本地连接远程Oracle数据库

    由于项目开发测试,需要在本地连接远程的Oracle数据库 之前搭过环境,但是重装了系统,现在又重新装一遍 软件安装 连接远程Oracle需要两个软件: 一个Oracle客户端,instantclien ...

  8. Java中的数据类型——通过示例学习Java编程(5)

    作者:CHAITANYA SINGH 来源:https://www.koofun.com//pro/kfpostsdetail?kfpostsid=15 数据类型用来定义变量可以采用的值,例如,如果变 ...

  9. 前端之Html元素的分类

    一.html元素可分为三大类:块元素.内联元素.可变元素 1.块元素: 常见块状元素:div,p,ul,ol,li,dl,dt,dd,form,hr,table,tr,td,h1-h6,filedse ...

  10. 从零开始利用vue-cli搭建简单音乐网站(二)

    1.利用vue-router实现页面跳转 程序可以正常运行之后,下面我们需要配置路由实现页面的局部刷新,这一功能将用来实现网站页面的跳转. 打开程序目录,进入"src\router\inde ...