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. Spring Boot后端+Vue前端+微信小程序,完整的开源解决方案!

    项目简介 一个小商场系统,包括: 后端:Spring Boot 管理员前端:Vue 用户前端:微信小程序 功能介绍 1.小商城 首页 专题列表.专题详情 分类列表.分类详情 品牌列表.品牌详情 新品首 ...

  2. Java程序员都应该去使用一下这款强大的国产工具类库

    这不是标题党,今天给大家推荐一个很棒的国产工具类库:Hutool.可能有很多朋友已经知道这个类库了,甚至在已经在使用了,如果你还没有使用过,那不妨去尝试一下,我们项目组目前也在用这个.这篇文章来简单介 ...

  3. 使用jqzoom插件时

    [javascript] view plaincopy /*使用jqzoom*/ $(function() { $(".jqzoom").jqueryzoom({ xzoom: 3 ...

  4. 运用session来控制用户的异地登录被挤下线情况

    在用QQ的过程中我们如果你的账号在另外一台手机上面登录,这是腾讯后台会提醒你异地登录,可能你的账号被盗了,然后你手机上得QQ就会被退出登录,这个时候你就需要重新登录修改密码,以确保账号的安全.那这种被 ...

  5. asp.net core分块上传文件

    写完asp.net多文件上传(http://www.cnblogs.com/bestckk/p/5987383.html)后,感觉这种上传还是有很多缺陷,于是...(省略一万字,不废话).这里我没用传 ...

  6. onpageshow 监听页面是否是缓存页面

    需求:点击A页面跳转至B页面,在B页面点击手机物理回退键或者history.back回退时,需要在A页面判断当前页面是否是回退回来的页面,而不是新加载的.这里用到一个 onpageshow 事件. 定 ...

  7. Mvc 多级控制器 路由重写 及 多级Views目录 的寻找视图的规则

    1.那么我们再来看我们需要的访问方式,如下图 如果我们要访问Admin下的TestController里面的Index页面,那么我们输入Test/Index,这个肯定不行的.因为TestControl ...

  8. Java设计模式之单例模式 - Singleton

    用来创建独一无二的,是能有一个实例的对象的入场券.告诉你一个好消息,单例模式的类图可以说是所有模式的类图中最简单的,事实上,它的类图上只有一个类!但是,可不要兴奋过头,尽管从类设计的视角来说很简单,但 ...

  9. codeforces1025

    hackforces + fstforces A 很明显当有一个字母出现次数>1时即合法 $n = 1$的情况需要特判 #include<cstdio> #include<ve ...

  10. Permutations(copy)

    Given a collection of numbers, return all possible permutations. For example, [1,2,3] have the follo ...