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

智能推荐

hibernate的级联保存操作(一对多)_hibernate级联保存_最明亮的少年的博客-程序员秘密

现在我们开始做级联保存操作的练习,上一篇《hibernate基本保存操作》中介绍了hibernate执行保存过程的操作。我们在那个的基础上来做一对多的级联保存操作;第一步:创建数据库模型Customer(客户)和LinkPerson(联系人)public class Customer{ private String id;//主键ID private String cust

[ERROR] mysqld: File './mysql-bin.~rec~' not found (Errcode: 13)解决方法_cymgo的博客-程序员秘密

【转自】http://blog.haohtml.com/archives/9202今天突然收到消息机房的一台服务器的mysql无法启动了,首先检查了一下mysql的错误日志,发现最后出现以下错误:020101 00:42:21  mysqld started/usr/local/mysql/libexec/mysqld: File './mysql-bin.index' not

PHP SOCKET编程 学学_丰锅神操作的博客-程序员秘密

1. 预备知识       一直以来很少看到有多少人使用PHP的socket模块来做一些事情,大概大家都把它定位在脚本语言的范畴内吧,但是其实php的socket模块可以做很多事情,包括做ftplist,http post提交,smtp提交,组包并进行特殊报文的交互(如smpp协议),whois查询。这些都是比较常见的查询。特别是php的socket扩展库可以做的事情简直不会比c差

一.java平台、JDK、JKE和环境变量配置_小金的学习笔记的博客-程序员秘密

JDK(Java Development Kit):Java 开发工具包JRE(Java Runtime Environment ):Java 运行环境JVM (Java Virtual Machine):Java 虚拟机。

在哪里判断Activity是否在AndroidManifest中注册_查询activity是否注册_我只偷一只猪的博客-程序员秘密

我们跳转到一个Activity的时候,如果目标Activity没有在AndroidManifest.xml中注册,会报以下错误 Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.androidp/com.example.androidp.SecondActivity}; have you declared this activity in

java转义字符_victorWu在日本的博客-程序员秘密

function StorePage(){d=document;t=d.selection?(d.selection.type!=None?d.selection.createRange().text:):(d.getSelection?d.getSelection():);void(keyit=window.open(http://www.365key.com/storeit.

随便推点

docker的一些注意事项_docker注意事项_sdyba的博客-程序员秘密

1.关于ip的问题 使用docker inspect 容器ID查案docker的元信息 IPAddress就是docker的地址同一个docker内的多个容器之间通信必须使用docker的内网ip ,同一个docker内一个容器不能通过宿主机的ip访问另一个容器。比如宿主机的ip是192.168.3.122, 在宿主机上安装docker, docker的ip是171.72.7.3....

iis链接oracle进程无法释放的解决方案_iis 连接oracle_er_得一的博客-程序员秘密

2022年7月10日ts250服务器oracle占用CPU达到100%,经查看事件查看器,发现接口8053占用oracle可能无法释放进程,处理过程如下:1.show parameter resource_limit显示资源限定是否开启,value为true是开启,为false是关闭2.alter system set resource_limit=true如果未开启,则使用此命令开启资源限定功能3.create profile ZiYuanXianDing limit connect_time

HTTP Session、Cookie机制详解_古渡廊桥的博客-程序员秘密

HTTP Session、Cookie机制详解 &lt;/h1&gt; &lt;div class="clear"&gt;&lt;/div&gt; &lt;div class="postBody"&gt; 一、什么是http session,有什么用...

省市县三级联动_weixin_30419799的博客-程序员秘密

上次找到地区编码后,就测试省市县。网上找到例子感觉不是很合适,然后修改了下。本来是从自己数据库查询,但做测试的话,在网上找到了一个地区编码的api,然后就是跨域问题。原来用ajax访问失败,getJSON可以,但getJson有同步问题,设置了全局参数也不管用,只好重复使用了。 1 &lt;!DOCTYPE html&gt; 2 &lt;html&gt; 3 &lt;he...

前端将图表和表格导出为PDF_前端不能将整个列表转换为pdf_duan_lily的博客-程序员秘密

import html2canvas from 'html2canvas'import JsPDF from 'jspdf'let exportTime = '';const exportPdf = { /** * 1.图片清晰问题 * 2.导出图片改造 * pdf * @param {配置内容} options * options:{ * elementId:'#xxx', * fileName:'文件名', * type: 'pdf',

nginx开启ssl并把http重定向到https的两种方式_nginx https 重定向http_南瓜慢说的博客-程序员秘密

1 简介Nginx是一个非常强大和流行的高性能Web服务器。本文讲解Nginx如何整合https并将http重定向到https。https相关文章如下:(1)Springboot整合https原来这么简单(2)HTTPS之密钥知识与密钥工具Keytool和Keystore-Explorer(3)Springboot以Tomcat为容器实现http重定向到https的两种方式(4)Spr...

推荐文章

热门文章

相关标签