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. c3p0连接池的简单使用和测试1

  2. hibernate添加帮助文档和源码

  3. 为什么会出现lvs+nginx

    一.ngix(应用层 网络七层负载均衡) 1.异步转发,请求数据和相应数据都要经过ngix,ngix和客户端建立连接 2.轮询所有的tomcat服务器,保证请求成功或者最后一台tomcat服务器也请求 ...

  4. 537 Complex Number Multiplication 复数乘法

    详见:https://leetcode.com/problems/complex-number-multiplication/description/ C++: class Solution { pu ...

  5. 渣渣菜鸡为什么要看 ElasticSearch 源码?

    前提 人工智能.大数据快速发展的今天,对于 TB 甚至 PB 级大数据的快速检索已然成为刚需,大型企业早已淹没在系统生成的浩瀚数据流当中.大数据技术业已集中在如何存储和处理这些海量的数据上.Elast ...

  6. jquery.validate自定义验证--成功提示与择要提示

    1. 自定义验证--成功提示 1) 添加选项 errorClass: "unchecked", validClass: "checked", errorElem ...

  7. 微信小程序---图片上传+服务端接受

    原文地址:http://blog.csdn.net/sk719887916/article/details/54312573 微信小程序,图片上传,应用地方-修改用户信息的头像. 详细代码: 小程序的 ...

  8. drupal基本知识介绍

    2. Drupal 安装在安装Drupal前,你需要在服务器上先搭建一个PHP+MySQL环境.专业网站一般是安装LAMP(Linux+Apache+MySQL+PHP).环境的搭建可参考如下文章:  ...

  9. 使用 Visual Studio 2017 部署 Azure 应用服务的 Web 应用

    本快速入门介绍了如何使用 Visual Studio 2017 创建并部署 Azure Web 应用.在本教程中完成的所有操作均符合1元试用条件. 本快速入门介绍了如何使用 Visual Studio ...

  10. Flask应用运行流程

    当我们运行项目后,Flask内部都经历了什么 1.app.run()启动项目,ctrl点进源码 app.py: 1)执行了run_simple() 2)注意第三个参数,这里是Flask实例化的对象,在 ...