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. java string(转)

    初探Java字符串 优化变成了忧患:String.split引发的“内存泄露” String是java中的无处不在的类,使用也很简单.初学java,就已经有字符串是不可变的盖棺定论,解释通常是:它是f ...

  2. 黑马MySQL数据库学习day02 表数据CRUD 约束CRUD

    /* 基础查询练习: 1.字段列表查询 当查询全部字段时,一种简便方式,使用*代替全部字段(企业中不推荐使用) 2.去除重复行 DISTINCT,注意修饰的是行,也就是整个字段列表,而不是单个字段. ...

  3. java操作redis实现和mysql数据库的交互

    连接地址http://blog.csdn.net/kingcat666/article/details/77936970

  4. [题解](组合数/二位前缀和)luogu_P2822组合数问题

    首先要知道C(n,m)=C(n-1,m)+C(n-1,m-1),这样显然是一个杨辉三角,这样大部分的问题就解决了, 那么判能否整除只需要杨辉三角对k取模即可, 而对于多组数据的k都是一样的,所以用前缀 ...

  5. 基于PHP的正则表达式

    用法 从某个字符抽取信息 用新文本替换匹配的文本 把字符串拆分成小块字符串组成的数组 基础 preg_match('/需要匹配的正则表达式/', '字符串'); 正则匹配模式 集合: [xxxx]-- ...

  6. java emoji表情存储解决方案

    1.问题产生情况 我遇到这个问题是做微信开发的时候有些有用的头像用了微信的emoji表情,然而我的mysql数据库用的编码是utf8_general_ci,就是utf-8编码,结果也就报错误了. 2. ...

  7. AmazeUI 保存浏览器数据 永久性

    //保存永久缓存数据function SaveAmuiStore(ItemName, ItemData){ if (window.localStorage) { var store = $.AMUI. ...

  8. 修改输入框placeholder的默认样式

    一般网页中都用到input的placeholder属性,想让这个默认样式和网页保持一致,就需要重新设定样式,百度百度: :-moz-placeholder { / color: #000; opaci ...

  9. 项目在cocos 2.23移植到cocos 3.1.0所出现的bug

    在建项目时一定要注意选择源代码!而不是预编译库 "extensions/ExtensionMacros.h”: No such file 项目右键-属性-配置属性-c/c++ - 常规-附加 ...

  10. 保存 http request 的数据到数据库表

    开发需求:把 http request 对象的数据保存到数据库中 第一步:编写 RequestInfoService 类,保存方法名是 saveRequestInfo // 保存request信息 p ...