XSS、CSRF攻击与防范_dd20523417844009的博客-程序员秘密

技术标签: ViewUI  javascript  

一、XSS攻击

  XSS攻击全称跨站脚本攻击,是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或者 JavaScript 进行一种攻击。攻击者编写脚本设下陷阱,用户在自己的浏览器上运行时,一不小心就会受到被动攻击。

  例子:如果A用户评论 [hello world] 提交到服务器,B用户看到这条评论的时候一切正常。但如果C用户评论 [<script>console.log(document.cookie)</script>],那么当B用户访问这条评论所在的界面是,这串js代码就会在B用户的浏览器执行,输出cookie的值。这样就构成了XSS攻击。

  防范:

                1)使用 XSS Filter

      针对用户提交的数据,只接受规定的长度或内容的提交,过滤掉其他的输入类型。例如表单提交年龄只接受 int 类型,过滤掉特殊的HTML标签<script>等,过滤 JS 事件例如 onclick, onfocus等。

     2)对HTML标签插入的不可信数据进行 HTML Entity 编码。

       

 

 

       3)JavaScript 编码 将 \ 转成 \\,将/ 专程/\,将半角符号转成全角符号  

       4)HTTP Only Cookie 许多XSS攻击是为了得到用户的cookie信息,将重要的cookie信息标记为 http only,这样的话当浏览器想服务器端发起请求时就会带上cookie,但是在脚本中却不能访问cookie信息,避免了XSS攻击利用js代码document.cookie获取cookie信息。

 

 

 

二、CSRF攻击

  CSRF全称跨站请求伪造,可以理解为攻击者盗用了用户的身份,以用户的名义发送了恶意请求。

  原理:

    • 用户C打开访问受信任网站A,输入用户名和密码请求登陆网站A
    • 在用户信息通过验证后,网站A产生cookie信息并返回给浏览器,此时用户登陆网站A成功,并可以正常发送请求到网站A。
    • 用户在未退出网站A之前,在同一浏览器中,打开了一个TAB页访问网站B
    • 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A
    • 浏览器咋接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息向网站A发出请求,网站A并不知道该请求由B发起,所以会根据用户C的权限处理该请求,导致来自网站B的而已代码被执行。

 

  防范:

    • 验证 HTTP Referer 字段
    • 请求地址中添加token并验证
    • 使用验证码

转载于:https://www.cnblogs.com/pingzi-wq/p/11567624.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dd20523417844009/article/details/102434754

智能推荐

在centos/redhat6.5上编译Mariadb…_gao1738的博客-程序员秘密

Mariadb支持tokudb的引擎,但官方下载的binarytar包中只有带有glibc_214的才带有tokudb引擎。顾名思义,带有“glibc_214”的安装包只有在带有glibc2.14版本的操作系统上才可以安装使用,而centos/redhat6.5上默认的版本是glibc 2.12 。。。。tokudb官方的提供的mariadb/mysql版本可以直接在centos/r

commit提交失败解决问题_迪迪didi的博客-程序员秘密

没有reset彻底解决方法1、用命令git reset --hard HEAD^git reset --soft HEAD~12、再正常执行提交逻辑git pullgit add (/src/didi/java/com/did/didi/dd/DiDir.java)/改的类的路径+.javagit commit -m “提交注明”git push origin HEAD:refs/for/v_fenzhiname没有执行add前提,删除代码git checkout xxx路

MATLAB箭头绘制 arrow3 函数与 quiver3 函数的实用教程_matlab quiver3_止于至玄的博客-程序员秘密

MATLAB 的 arrow3 函数可以方便地在 figure 窗口中绘制箭头,效率也还可以,这里简单介绍其基本使用方法以便读者参考。对于需要绘制较多矢量箭头的场景,推荐使用 quiver 和 quiver3 函数。

卡特兰-HDU1515-HDU2067_Raise的博客-程序员秘密

题目:一个栈的入栈序列是A、B、C、D、E,则栈的不可能的输出序列()A、EDCBA       B、DECBA     C、DCEAB     D、ABCDE题目从手工操作方面比较容易理解,需要借用一个辅助栈,先理一遍思路:先看B答案:(0)实始态入栈序列是ABCDE               i出栈序列是CDBEA               j栈:|-...

MySQL主从复制集群添加slave节点_mysql主从集群 增加节点_fenglei2020的博客-程序员秘密

首先已经有了两台主从复制的节点192.168.8.133 主192.168.8.134 从1再添加一个slave节点192.168.8.135 从2mysql主从集群搭建方法参考:MySQL5.7.30主从复制集群搭建及互为主从集群搭建首先要在135上安装mysql服务,方法见:centos7 MySQL5.7.30安装步骤及问题处理使用配置文件:/etc/my.cnf[mysqld]port=3306socket=/usr/local/mysql/mysql.so...

windows下修改mysql 5.5数据库的默认编码_【MySQL】Win7下修改MySQL5.5默认编码格式_大宝碎碎念的博客-程序员秘密

一般安装MySQL程序过程中,有一步骤是选择MySQL的默认编码格式的,程序默认为Latin1编码格式,当然也可以选择第三个选项,手动选择gbk或utf8编码格式,以支持中文数据。如下图:现在问题出来了,安装完成后,又想去修改MySQL的默认编码格式(这样就省去每次新建数据库都要指定其编码格式的麻烦),该怎么办呢?1:如何查看MySQL相关的编码格式默认值在cmd中,输入指令"mysql –u r...

随便推点

CMS GC总结_jdk新特性cms gc_duheaven的博客-程序员秘密

转载自http://www.iteye.com/topic/473874 首先感谢阿宝同学的帮助,我才对这个gc算法的调整有了一定的认识,而不是停留在过去仅仅了解的阶段。在读过sun的文档和跟阿宝讨论之后,做个小小的总结,如果有谬误,敬请指正。    CMS,全称Concurrent Low Pause Collector,是jdk1.4后期版本开始引入的新gc算法,在jdk5和j

循序渐进,深入理解KMP算法_文艺小码农的博客-程序员秘密

KMP算法是三位大牛:D.E.Knuth、J.H.Morris和V.R.Pratt同时发现的。其中第一位就是《计算机程序设计艺术》的作者!KMP算法要解决的问题就是在字符串(也叫主串)中的模式(pattern)定位问题。说白了,就是关键字搜索。模式串就是关键字(接下来称它为P),如果它在一个主串(接下来称为T)中出现,就返回它的具体位置,否则返回-1(常用手段)。常规的暴力匹配算法...

Redis笔记5_RiCheng218的博客-程序员秘密

P25 SpringBoot整合Redis说明:在springboot2.x之后,原来使用的jedis换成了lettuce原因:jedis:采用的直连,多个线程操作的话,是不安全的,想要避免不安全使用jedis pool连接池lettuce:采用netty,实例可以在多个线程中共享,不存在线程不安全的情况,可以减少线程数据1.源码分析,在springAutoConfig中的Redis自动配置类里@[email protected](name = {“redisTem

mongodb conf 文件_weixin_33894640的博客-程序员秘密

2019独角兽企业重金招聘Python工程师标准&gt;&gt;&gt; ...

element UI 全局修改 主题颜色_更改elementui全局颜色_要不,在试一下的博客-程序员秘密

在使用vue+elementUI开发后台管理项目时,需要修改默认颜色,步骤如下。步骤:1: 进入项目文件夹 cd 你的项目文件夹名称2: 全局安装主题生成工具 cnpm i element-theme -g3: 在项目中安装chalk主题 npm i element-theme-chalk -D4: 初始化变量 et -i 【执行该命令的时候报错了】5:解决方法:执行命令 cnpm install element-themex -g之后再执行: et -i 就可

idea springboot之简单demo实践--spring data jpa操作数据库_花椒胡椒小辣椒的博客-程序员秘密

参考链接因为参考上面的博文发现有几个问题,解决问题之后把自己的完整步骤整理如下,在搭建项目时遇到的问题也整理出来。我用的springboot的版本是2.1,参考博文应该是1.5,版本不一样有些api就不一样了,遇到问题可以看看参考。springboot项目搭建(更新中)环境:mac系统所需工具:IDEA(jdk1.8)+mysql+postman下载地址:idea、 mysql、my...

推荐文章

热门文章

相关标签