Web应用安全防护-XXS_壮乡码农的博客-程序员宅基地

技术标签: 安全  Web安全  前端  p2p  

一、什么是XSS?

        XSS:  Cross Site Script ,跨站脚本攻击。恶意攻击者在页面中注入恶意Script代码,在用户浏览时,恶意代码会被执行,从而达到攻击的目的。

        恶意者通常会通过Web应用提交的内容提交Script代码,导致浏览器将用户输入的内容当成了代码执行。

二、XSS 攻击类型

1)持久性XSS

        将恶意代码保存在数据库中,谁加载到该数据谁则被攻击,常见博客、论坛中。而且是长期的威胁。

1)网站留言板功能,有浏览内容、联系方式等输入框

2)我们期望用户在输入框中输入正常数据,恶意攻击者输入script代码,在动态网站渲染数据时,将代码渲染出执行

3)窃取cookie

黑客--插入js脚本--> 服务器实例化到数据库《--管理员查看信息,执行恶意代码

思考: 如果将恶意脚本放入到服务器中。

(1)通过ajax 

(2)img加载外部数据源,但是数据源的地址是向黑客的地址发送相关的信息,如向黑客的地址发送cookie的信息

2)反射性XSS

         非持久性XSS,恶意代码没有保存到目标网站,而是通过印个引诱用户点击一个恶意链接

           参数--》Controller --> 回显

2)DOM性XSS

        不存储,不交互 

三、植入js代码攻击及危害分析

外在表现:

1.直接注入JaveScript代码

2.引用外部js文件

基本实现原理:

1.通过img标签的src发送数据

2.构造表单诱导用户输入账号密码

3.流量劫持,恶意跳转

四、预防策略

1、输入环节

限制输入框的长度、限制特殊字符限制,后端代码限制输入长度、处理特殊字符。Filter过滤器统一处理(自定义处理规则、使用Apache commom text、owasp AntiSamy)

流量网关(进行安全校验)--》业务网关,把校验放在流量网关进行校验

2.Cookie防护

cookie设置httponly,一般servlet容器默认httpOnlytrue

3、X-Frame-Options 响应头

4、输出环节

显示时对字符进行转义处理,OWASP ESAPI Java 显示时对字符转义处理,各种模板都有相关语法,通常情况下前段框架或者模板引擎都有转义的功能,默认开启

5、DOM型XSS

避免innerHTML、outerHtml、document.write()

6、富文本处理

禁止危险标签,如<iframe><form><script>

7、内容安全策略(CSP)

CSP之指定有效域

分类:

(1)Content-Security-Policy: 配置好后,不符合CSP的外部资源会被阻止加载

(2)Content-Security-Policy-Report-Only:表示不执行限制选项,知识记录违反记录的行为。配合report-uri使用

如何使用?

(1)在HTTP Header 上使用,在网关的filter中配置或者nginx中配置

(2)在HTML上使用

使用案例:

1)限制所有的外部资源,只能从当前域名加载,不包含子域名:

Content-security-Policy: defuault-src 'self'

2) 限制所有的外部资源,只能从当前域名及其子域名加载

Content-security-Policy:default-src *.xxxx.com  使用*通配符                     

3)   仅允许从指定域名加载

Content-security-Pilicy:default-src 'self';img-src *;media-src xxx.com yyy.com;script-src script.xxx.com                              

4) 仅允许通过HTTPS的方式从指定域名访问文档

Context-security-Policy:default-src https:xxxx.com

5) 发送违例报告

Content-Security-Policy:default-src 'self';report-uri http:xxxx.com/api

发送的json字符串如下:

{

        ”csp-report”: {

                "document-uri": ''

                "referece": ''

                "blocked-uri":'',

                "violated-directive": "style-src cdn,example.com",

                "original-policy":""

}

}

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

智能推荐

Vue进阶(幺捌叁):IE9兼容性问题-数据初始化问题_No Silver Bullet的博客-程序员宅基地

前言在Vue项目开发过程中,以父子组件的形式进行页面调用,在测试过程中发现IE9下,子组件中定义初始化数据dataA=0,执行异步逻辑A,在异步请求方法前,输出dataA结果为0,请求结束后时,后台返回值将dataA赋值为1,输出dataA结果为1。再次触发子组件同样事件,但后台请求结果不满足赋值条件,对dataA不做赋值操作,发现在异步请求方法前后,输出dataA结果为1!伪码如下:data () { return { dataA: 0 }}&lt;script&gt; methods

在vc环境中一个c语言源程序要经过编译,在vc环境中,一个c语言源程序要经过编辑、编译、和什么后才能执行?..._weixin_39535283的博客-程序员宅基地

2020-02-25 回答//code by pnig0s1992//date:2012,3,13#include#include#includetypedef void (_stdcall*p)(void);bool enabledebugpriv(){handle htoken;luid sedebugnamevalue;token_privileges tkp;if (!openproces...

前端自动化部署服务器, 告别繁琐部署过程_小仙女de成长的博客-程序员宅基地

简单实用的前端部署, 一条命令搞定, 省去繁琐的步骤!主要是** nodejs shelljs(命令行命令) node-ssh(连接服务器)**项目git 地址(这个git项目是我自己搭的一个比较low的vue脚手架,集成ts)(第一次写文章, 文笔不行, 多多包涵,有不对的地方尽管指出)(主要看 自动部署 在 upload 目录 )如何在你项目中使用( 五步曲 )第一步, 把项目里 upload 文件夹复制到你项目根目录image.png第二步, 下载该js相关依赖

dwz系列之一--项目引入dwz_wuwujian111的博客-程序员宅基地

这没什么要说的,只要按照官方样例引入就可以了。不过有一点要注意,我在引入到项目开发后,在firefox浏览器没有问题,但是在ie下出现了问题:”jquery“未定义。 截止到本篇文章,dwz引入的是jquery-2.1.4.js,将这个版本的js替换成jquery-1.7.2.js就没有问题了。

DVWA high 带token暴力破解_浅笑⁹⁹⁶的博客-程序员宅基地

一、选择Pitchfork模式。选择要爆破的参数二、配置Options找到optiops(设置)把线程设为1配置Grep=Extract,点添加点击Refetch response 获取返回的包,找到返回的token值,选中并复制下来。点击确定(注意:一定要在选中token的状态下点击确定)滑到设置的最下面,选择always三、配置Payloads找到Payloads 设...

嵌入式内存(一)_gogofly_lee的博客-程序员宅基地

在嵌入式系统中,或多或少会用到嵌入式内存,现在主流是SDR or DDR SDRAM 内存,这里收集了几篇关于嵌入式内存介绍和应用的文章。下面是最近在网上看到一份嵌入式内存的报告,分析得非常详细,可惜要价太高,把它的摘要转贴在下面:  随着手机功能的增多,性能的加强,内存所占手机的成本比例越来越高,某些高端手机和智能手机中内存所占的成本比例最高。因此,很有必要对手机内存做以详细的研究。

随便推点

mysql查询优化之三:查询优化器提示(hint)_weixin_34363171的博客-程序员宅基地

目录:《MySQL中的两种临时表》--强制使用临时表 SQL_BUFFER_RESULT《MySQL 多表关联更新及删除》《mysql查询优化之三:查询优化器提示(hint)》《MySQL锁之三:MySQL的共享锁与排它锁编码演示》 --for update 和 lock in share mode  《mysql实战优化之九:MySQL查询缓存总结》--关闭查询缓冲 SQL_...

微信公众平台开发(16)--公众号二维码管理_程序员大阳的博客-程序员宅基地

本文目录1. 概念2. 代码3. 测试4. 小结1. 概念公众号二维码和普通二维码是不同的,普通二维码扫码后要么显示一个字符串内容,要么跳转到一个网页(当二维码的内容是一个网址时,微信扫码会跳转对应网页)。公众号二维码使用微信扫码后,会跳转到生成该二维码的公众号(服务号),而且会立即触发扫码事件。这样对于我们使用程序定义扫码后的动作行为,提供一个很好的切入点。也就是说,公众号二维码扫码,第一可以跳入对应公众号,第二我们可以从后台得知扫码的具体信息并针对处理。2. 代码调用接口可以生成一个二维码图

poi 设置样式_weixin_30950237的博客-程序员宅基地

先设置垂直居中在设置水平居中style.setAlignment(CellStyle.VERTICAL_CENTER); style.setAlignment(CellStyle.ALIGN_CENTER);转载于:https://www.cnblogs.com/xxwtfw/p/7073032.html...

tomcat 跨域的配置 CORS laravel_fareast_mzh的博客-程序员宅基地

* 允许所有跨域 E:\apache-tomcat-7.0.81\conf\web.xml &amp;lt;filter&amp;gt; &amp;lt;filter-name&amp;gt;CorsFilter&amp;lt;/filter-name&amp;gt; &amp;lt;filter-class&amp;gt;org.apache.catalina.filters.CorsFilter&amp;lt;/filter-class&amp;gt;...

mysql 面试题_前方太黑暗的博客-程序员宅基地

1、MySQL的复制原理以及流程基本原理流程,3个线程以及之间的关联;2、MySQL中myisam与innodb的区别,至少5点(1)、问5点不同;(2)、innodb引擎的4大特性(3)、2者selectcount(*)哪个更快,为什么3、MySQL中varchar与char的区别以及varchar(50)中的5

谷歌李开复:我的传奇人生源于十句箴言_lijunjieone的博客-程序员宅基地

对于成功,不仅仅是对名利的追逐,不应该完全用世俗的价值观去衡量成功与否,而是实现自己的价值,关爱自己身边的人,给这个世界带来更多的影响力,用自己的力量去感染周围的磁场.当你某一天逝去的时候,你的墓志铭上应该撰写的是对你最公平的评价.成功的定义应该是多元化的.在这个下午,谷歌大中华区总裁李开复用平实而不失幽默的语言,讲述了自己成长中的很多故事.和许多人的成长经历相似,他的成长中也有儿时的淘气...

推荐文章

热门文章

相关标签