本文目录一览:
- 1、富文本 限制字数
- 2、有哪些管理漏洞可以导致全部猝死
- 3、xss为什么没有破解版
- 4、xss载入很久
- 5、PHP如何做好最基础的安全防范
- 6、45. 从零开始学springboot撸一个Xss过滤器-注解实现
富文本 限制字数
1、Kindeditor的演示里面有个字数统计样例,你可以参考。
2、JS代码也就是XSS的问题,你靠客户端交互来禁止基本上就是给摆设,因为请求数据本来可以定制,所以客户端的验证交互基本毫无意义,要彻底解决这个问题,必须在服务器端对HTML文本做过滤,把它过滤为干净的HTML代码,这方面OWASP的ESAPI的过滤接口算是比较全面的。
有哪些管理漏洞可以导致全部猝死
打开APP
我叫火柴
关注
常见的极易容易导致致命危险的安全漏洞 转载
2022-07-16 15:02:30
我叫火柴
码龄13年
关注
上期,提到了系统中不常见但不容忽视的网站漏洞,这篇我们就回顾一下一些常见甚至致命的高危漏洞
1. SQL 注入,可利用该漏洞获取网站数据库信息。
SQL 注入漏洞的产生原因是网站程序在编写时,没有对用户输入数据的合法性进行判断,导致应用程序存在安全隐患。SQL 注入漏洞攻击就是利用现有应用程序没有对用户输入数据的合法性进行判断,将恶意的 SQL 命令注入到后台数据库引擎执行的入侵者攻击手段。
2. 越权漏洞,可利用该漏洞越权获取其他用户信息。
越权访问(Broken Access Control,简称 BAC),是一种在 web 程序中常见的安全缺陷,其原理是对用户提交的参数不进行权限检查和跨越访问控制而造成的。比如修改一个账号的昵称,接口参数是账户ID,后端只校验账号ID 正确就可以修改,那就可以任意修改其他人的账户昵称了
3. 逻辑漏洞,可利用该漏洞造成网站业务逻辑混乱。
4. XSS 漏洞,可利用该漏洞篡改网站页面,获取其他用户 Cookie。
跨站脚本攻击简称为 XSS 又叫 CSS (Cross Site Script Execution),是指服务器端的 CGI 程序没有对用户提交的变量中的 HTML 代码进行有效的过滤或转换,允许攻击者往 WEB 页面里插入对终端用户造成影响或损失的 HTML 代码。
5. csrf 漏洞,可利用该漏洞获取其他用户信息
跨站请求伪造(Cross-site request forgery,缩写为 CSRF),也被称成为“oneclick attack”或者 session riding,通常缩写为 CSRF 或者 XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与 XSS 非常不同,并且攻击方式几乎相左。XSS 利用站点内的信任用户,而 CSRF 则通过伪装来自受信任用户的请求来利用受信任的网站。与 XSS 攻击相比,CSRF 攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比 XSS 更具危险性。
5. 会话管理漏洞,可利用该漏洞登录网站系统。
会话管理主要是针对需授权的登录过程的一种管理方式,以用户密码验证为常见方式,通过对敏感用户登录区域的验证,可有效校验系统授权的安全性。一般可出现以下漏洞
用户口令易猜解
通过对表单认证、HTTP 认证等方式的简单口令尝试,以验证存在用户身份校验的登录入口是否存在易猜解的用户名和密码。
没有验证码防护
验证码是有效防止暴力破解的一种安全机制,通过对各登录入口的检查,以确认是否存在该保护机制。
存在易暴露的管理登录地址
某些管理地址虽无外部链接可介入,但由于采用了容易猜解的地址(如:/admin/login)而导致登录入口暴露,从而给外部恶意用户提供了可乘之机。
提供了不恰当的验证错误信息
某些验证程序返回错误信息过于友好,如:当用户名与密码均错误的时候,验证程序返回“用户名不存在”等类似的信息,通过对这一信息的判断,并结合
HTTP Fuzzing 工具便可轻易枚举系统中存在的用户名,从而为破解提供了机会。
Session 随机字符串简单又规律
Session 作为验证用户身份信息的一个重要字符串,其随机性是避免外部恶意用户构造 Session 的一个重要安全保护机制,通过抓包分析 Session 中随机字符串的长度及其形成规律,可对Session 随机性进行验证,以此来确认其安全性。
6. 暴力破解漏洞,可利用该漏洞暴力破解用户帐户。
服务端接口没有对请求次数做限制,导致攻击者可以通过暴力的方式,不断的尝试账号,密码,验证码对接口请求,尤其遇到弱口令的密码或者验证码。所以建议在请求之前做人机校验防护,和请求次数防护
7、不安全的对象引用,可通过构造敏感文件名而达成下载服务端敏感文件的目的
不安全的对象引用是指程序在调用对象的时候未对该对象的有效性、安全性进行必要的校验,如:某些下载程序会以文件名作为下载程序的参数传递,而在传递后程序未对该参数的有效性和安全性进行检验,而直接按传递的文件名来下载文件,这就可能造成恶意用户通过构造敏感文件名而达成下载服务端敏感文件的目的。
文章和自己个人网站同步:
常见的极易容易导致致命危险的安全漏洞_我叫火柴-个人博客
我叫火柴,”火柴“这个昵称还是第一次玩QQ的时候注册的,然后公司花名,网上昵称就都这么用了,希望这辈子,用尽一生,只求一次,燃尽自己,轰轰烈烈的爱一次。年轻时总喜欢强说愁。等长大了看了大话,几乎看过不下几十次,从笑看到哭,从无知看到无奈,原来自己也不过芸芸众生的一条狗罢了。
原文链接:
打开CSDN,阅读体验更佳
苹果系统新致命漏洞,黑客可以随意控制您的手机设备
国内知名黑客组织东方联盟的安全研究人员发现了苹果一个新的漏洞,可能会让黑客在您不知情的情况下访问您的iPhone和iPad。一旦用户授权他们的设备与黑客连接到同一个Wi-Fi网络,他们称这种漏洞为“信任劫持”,从而允许您无线管理iOS设备。东方联盟创始人兼黑客教父郭盛华:“一旦建立起这种信任关系,一切皆有可能,它引入了一种新的攻击媒介。”第一步需要您在安装完成后通过USB电缆将设备连接到计算机,但...
继续访问
网站设计中致使网站失败的几个最致命错误设计
网站设计中致使网站失败的几个最致命错误设计 早在一九九六年,我们就汇总了网站的10种错误设计。今年,我们访问了215位英美用户,就当代网站存在的错误设计进行了新一轮大规模可用性研究。从小型的地方性商业网站、娱乐网站,到非盈利性网站,再到国际组织机构的官方网站,通过对43个网站的分析,总结了当代网站10大最常见和最具破坏力的错误设计。这些错误设计,不但伤害了用户,也对网站的业务指标造成了负面影响。
继续访问
软件 Bug 五种等级,一级最致命
以下内容来自公众号逆锋起笔,关注每日干货及时送达作者|strongerHuang微信公众号|strongerHuang软件工程师,对一个词很敏感,那就是Bug。只要听到说自己写的代码有Bu...
继续访问
高通被曝致命芯片漏洞,危及全球企业和个人云数据
近日,网络安全供应商 Check Point 发表了声明,说该公司在一项代号为“Achilles”研究中,对高通骁龙的数字信号处理(DSP)芯片进行了广泛的安全性评估,发现其中存在大量漏洞,总数多达400多。 研究人员表示,由于易受攻击的DSP芯片“几乎见于世界上所有的安卓手机上”,导致全球受此漏洞影响的机型超过40%,其中不乏有全球知名品牌手机。 报告中指出,攻击者利用这些漏洞不仅可以将手机变成一个完美的监听工具,而且还能够使手机持续无响应,或者锁定手机上的所有信息,使用户永远不可访问。此外,攻击者还可
继续访问
Log4j安全漏洞持续爆雷,啥时候是个头?
近期工信部网络安全管理局通报称,阿里云计算有限公司(以下称:阿里云)在 11 月 24 日发现了 Log4j2 安全漏洞隐患后率先向 Apache 基金会披露了该漏洞,未及时向中国工信部通报相关信息,未有效支撑工信部开展网络安全威胁和漏洞管理。经研究,工信部网络安全管理局决定暂停阿里云作为上述合作单位 6 个月。暂停期满后,根据阿里云整改情况,研究恢复其上述合作单位。 根据工信部官网消息,工业和信息化部网络安全威胁和漏洞信息共享平台 12 月 9 日收到有关网络安全专业机构报告后,立即组织有关...
继续访问
智能输液系统可能致命?黑客可以利用漏洞远程控制输注速度
输液设备是一种常见的给药装置,在临床上输液皮条主要为一简单中空管道,一次只能挂接一袋/瓶药液,当药液输送完毕后,需要护士进行人为的更换另一袋/瓶药液,由于患者多且每个患者均可能需要多袋液体,一起频繁的更换使得医护人员的工作量极大,同时在换药过程中也很容易将需要按照一定顺序输入的药袋搞混,使得输液顺序打乱或输液药袋/药瓶搞错,给病人带来不可预知的危险。 因此随着医疗行业的日渐发展,为了智...
继续访问
高通DSP芯片被曝6个漏洞事件引发的安全危机猜想
近日,国外知名安全研究机构Check Point发现,高通骁龙系列芯片的数字信号处理芯片(DSP)中存在大量漏洞,总数多达400多。研究人员表示,由于易受攻击的DSP芯片“几乎见于世界上所有的安卓手机上”,导致全球受此漏洞影响的机型超过40%,其中不乏有全球知名品牌手机。 报告中指出,攻击者利用这些漏洞不仅可以将手机变成一个完美的监听工具,而且还能够使手机持续无响应,或者锁定手机上的所有信息,使用户永远不可访问。此外,攻击者还可以利用恶意软件和其他恶意代码完全隐藏恶意活动。 目前,高通已发表声明确认这些
继续访问
车辆碰撞起火事故的规律特点及常见起火原因 | 事故分析
来源:交通言究社导 语6月30日,内蒙古阿尔山市境内省道203线230公里处发生一起三车相撞并起火燃烧事故,造成6人死亡、38人受伤。近年来,因车辆碰撞导致起火燃烧的道路交通事故时有...
继续访问
热门推荐 【网络攻防】常见的网络攻防技术——黑客攻防(通俗易懂版)
几种常见的网络攻防技术 前言 一、SQL注入 二、XSS 攻击 1.反射型 2.存储型 三、CSRF 攻击 四、DDoS 攻击 五、DNS劫持 六、JSON 劫持 七、暴力破解 文章同样适用于非专业的朋友们,全文通俗化表达,一定能找到你亲身经历过的网络攻击(建议大家认真看完,这篇文章会刷新你对网络攻防的认知)。文章暂不谈网络攻防具体操作实现过程,我们用通俗易懂的语言一块聊聊——神秘的“网络攻防”
继续访问
模糊测试--强制性安全漏洞发掘
文档分享地址链接:;uk=2485812037 密码:r43x 前 言 我知道"人类和鱼类能够和平共处" 。 --George W. Bush, 2000年9月29日 简介 模糊测试的概念至少已经流传了20年,但是直到最近才引起广泛的关注。安全漏洞困扰了许多流行的客户端应用程序
继续访问
疫情期间网络攻击花样翻新,全年 81748 起安全事件背后暗藏规律!
2020年是新冠疫情构成主旋律的一年,全球经济形势、科技发展乃至人们的日常工作生活都受到疫情影响。在疫情催化各行业数字化转型更加依赖网络世界的同时,互联网安全也受到了前所未有的挑战。
继续访问
常见web安全隐患及解决方案
Abstract 有关于WEB服务以及web应用的一些安全隐患总结资料。 1. 常见web安全隐患 1.1.完全信赖用户提交内容 开发人员决不能相信一个来自外部的数据。不管它来自用户提交表单,文件系统的文件或者环境变量,任何数据都不能简单的想当然的采用。所以用户输入必须进行验证并将之格式化以保证安全。具体如下: ⑴ 始终对所有的用户输入执行验证,...
继续访问
常见web安全隐患及解决方案(转)
Abstract 有关于WEB服务以及web应用的一些安全隐患总结资料。 1. 常见web安全隐患 1.1.完全信赖用户提交内容 开发人员决不能相信一个来自外部的数据。不管它来自用户提交表单,文件系统的文件或者环境变量,任何数据都不能简单的想当然的采用。所以用户输入必须进行验证并将之格式化以保证安全。具体如...
继续访问
Unix主机安全漏洞分析及漏洞扫描器的设计与实现
Unix主机安全漏洞分析及漏洞扫描器的设计与实现2002年04月30日 16:00 来源:ChinaUnix文档频道 作者:HonestQiao 编辑:周荣茂级别: 初级薛静锋 (xuebook@xinhuanet.com)北京理工大学计算机科学工程系2002 年 5 月 01 日自从1993年Internet上首次采用第一种图形用户界面NCSA MOSAIC以来,这一全球最...
继续访问
Web通用型漏洞简介
本篇文章主要简单介绍一下(我能想到的)Web通用型漏洞(以OWASP体系为主,非组件引起的,可能出现在任何语言任何环境中的web漏洞)的原理以及简单的攻击者利用方式。注:看本篇文章不会学到任何新技术,但如果本篇文章里存在任何你感兴趣却不了解的技术,可以去其他地方查阅资料。当然文章中也有很多错误,也希望能获得指正。 文章目录注入SQL注入基于利用方式分类union回显注入报错回显注入布尔盲注延时盲注...
继续访问
如何使用人工智能保护API的安全
数字转型是基于一种可驱动新的操作模型的API,提供对业务逻辑、应用程序和数据的直接访问。虽然这种访问对于员工,合作伙伴和客户来说非常方便,但它也使API成为黑客和恶意网络的攻击目标。随着越来越多的攻击和漏洞,扩展安全性现在变得越来越重要。 现有的解决方案(例如访问控制,速率限制等)提供基本保护,但不足以完全阻止恶意攻击。今天的安全团队需要识别并响应动态变化的攻击,这些攻击利用了各个API的自我漏
网络安全教程(一)
1-网络安全概述 1-1基础概念 1-1-1计算机网络安全的定义 国际标准化组织ISO将计算机网络安全定义为:“为数据处理系统建立和采取的技术与管理的安全保护,保护网络系统的硬件,软件及其系统中的数据不因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连接可靠、正常的运行,网络服务不中断。” 1-1-2网络安全的5项特征 网络安全的5项特征: 保密性:信息不泄露给非授权用户、实体或过程,或供其利用的特性。 完整性:数据未经授权不能进行改变的特性。即信息在存储或传输过程中保持不...
继续访问
最新发布 十年老码农现身说法:凛冬将至,为什么我不劝退互联网
人生艰难,职业发展也不容易。这些除了依靠个人努力,更需要天时地利人和等外在条件。这不是个人做一点选择就可以搞定的,劝退、转行容易,但是想要因此一帆风顺、平步青云难。 人生不只是选择题,不是会选就能赢,更何况很多人的选择还是盲目做出的。我理解很多人因为行情不好而焦虑,因为焦虑而打退堂鼓。但相比于因为受到鼓动草草做出一个前途未
xss为什么没有破解版
xss没有破解版的原因是版权的限制。xss现在只有官方的平台,破解版破坏了游戏的平衡,没有版权的限制,所以禁止了,现在也就没有破解版了。
xss载入很久
系统版本长时间没有优化。XSS主机全称为XboxSeriesS是由美国微软公司开发并于2001年发售的一款家用电视游戏机,用户在使用时需要加载很久才能进入游戏是因为系统版本长时间没有优化造成,可前往官网优化到最新版本系统即可解决。
PHP如何做好最基础的安全防范
PHP如何做好最基础的安全防范
php给了开发者极大的灵活性,但是这也为安全问题带来了潜在的隐患,PHP如何做好最基础的安全防范呢?下面我为大家解答一下,希望能帮到您!
当开发一个互联网服务的时候,必须时刻牢记安全观念,并在开发的代码中体现。PHP脚本语言对安全问题并不关心,特别是对大多数没有经验的开发者来说。每当你讲任何涉及到钱财事务等交易问题时,需要特别注意安全问题的考虑,例如开发一个论坛或者是一个购物车等。
安全保护一般性要点
不相信表单
对于一般的Javascript前台验证,由于无法得知用户的行为,例如关闭了浏览器的javascript引擎,这样通过POST恶意数据到服务器。需要在服务器端进行验证,对每个php脚本验证传递到的数据,防止XSS攻击和SQL注入。
不相信用户
要假设你的网站接收的每一条数据都是存在恶意代码的,存在隐藏的威胁,要对每一条数据都进行清理
关闭全局变量
在php.ini文件中进行以下配置:
register_globals = Off
如果这个配置选项打开之后,会出现很大的安全隐患。例如有一个process.php的脚本文件,会将接收到的数据插入到数据库,接收用户输入数据的表单可能如下:
input name="username" type ="text" size = "15" maxlength = "64"
这样,当提交数据到process.php之后,php会注册一个$username变量,将这个变量数据提交到process.php,同时对于任何POST或GET请求参数,都会设置这样的变量。如果不是显示进行初始化那么就会出现下面的问题:
?php
// Define $authorized = true only if user is authenticated
if
(authenticated_user()) {
$authorized = true;
}
?
此处,假设authenticated_user函数就是判断$authorized变量的值,如果开启了register_globals配置,那么任何用户都可以发送一个请求,来设置$authorized变量的值为任意值从而就能绕过这个验证。所有的这些提交数据都应该通过PHP预定义内置的全局数组来获取,包括$_POST、$_GET、$_FILES、$_SERVER、$_REQUEST等,其中$_REQUEST是一个$_GET/$_POST/$_COOKIE三个数组的联合变量,默认的顺序是$_COOKIE、$_POST、$_GET。
推荐的安全配置选项
error_reporting设置为Off:不要暴露错误信息给用户,开发的时候可以设置为ON
safe_mode设置为Off
register_globals设置为Off
将以下函数禁用:system、exec、passthru、shell_exec、proc_open、popen
open_basedir设置为 /tmp ,这样可以让session信息有存储权限,同时设置单独的网站根目录expose_php设置为Offallow_url_fopen设置为Offallow_url_include设置为Off
SQL注入攻击
对于操作数据库的SQL语句,需要特别注意安全性,因为用户可能输入特定语句使得原有的SQL语句改变了功能。类似下面的例子:
$sql ="select * from pinfo where product = '$product'";
此时如果用户输入的$product参数为:'39'; DROP pinfo; SELECT 'FOO
那么最终SQL语句就变成了如下的`样子:
select product from pinfo where product = '39';
DROP pinfo;
SELECT 'FOO'
这样就会变成三条SQL语句,会造成pinfo表被删除,这样会造成严重的后果。这个问题可以简单的使用PHP的内置函数解决:
$sql = 'Select * from pinfo where product = '"' mysql_real_escape_string($product) . '"';
防止SQL注入攻击需要做好两件事:对输入的参数总是进行类型验证对单引号、双引号、反引号等特殊字符总是使用mysql_real_escape_string函数进行转义但是,这里根据开发经验,不要开启php的Magic Quotes,这个特性在php6中已经废除,总是自己在需要的时候进行转义。
防止基本的XSS攻击
XSS攻击不像其他攻击,这种攻击在客户端进行,最基本的XSS工具就是防止一段javascript脚本在用户待提交的表单页面,将用户提交的数据和cookie偷取过来。XSS工具比SQL注入更加难以防护,各大公司网站都被XSS攻击过,虽然这种攻击与php语言无关,但可以使用php来筛选用户数据达到保护用户数据的目的,这里主要使用的是对用户的数据进行过滤,一般过滤掉HTML标签,特别是a标签。下面是一个普通的过滤方法:
function transform_HTML( $string , $length null) { // Helps prevent XSS attacks
// Remove dead space.
$string = trim( $string );
// Prevent potential Unicode codec problems.
$string = utf8_decode( $string );
// HTMLize HTML-specific characters.
$string = htmlentities( $string , ENT_NOQUOTES);
$string = str_replace ( "#" , "#" , $string );
$string = str_replace ( "%" , "%" , $string );
$length = intval ( $length );
if ( $length 0) {
$string = substr ( $string , 0, $length );
}return $string ;
}
这个函数将HTML的特殊字符转换为了HTML实体,浏览器在渲染这段文本的时候以纯文本形式显示。如bold会被显示为: BoldText 上述函数的核心就是htmlentities函数,这个函数将html特殊标签转换为html实体字符,这样可以过滤大部分的XSS攻击。但是对于有经验的XSS攻击者,有更加巧妙的办法进行攻击:将他们的恶意代码使用十六进制或者utf-8编码,而不是普通的ASCII文本,例如可以使用下面的方式进行:
这样浏览器渲染的结果其实是:
a href = ""
SCRIPT Dosomethingmalicious
这样就达到了攻击的目的。为了防止这种情况,需要在transform_HTML函数的基础上再将#和%转换为他们对应的实体符号,同时加上了$length参数来限制提交的数据的最大长度。
使用SafeHTML防止XSS攻击
上述关于XSS攻击的防护非常简单,但是不包含用户的所有标记,同时有上百种绕过过滤函数提交javascript代码的方法,也没有办法能完全阻止这个情况。目前,没有一个单一的脚本能保证不被攻击突破,但是总有相对来说防护程度更好的。一共有两个安全防护的方式:白名单和黑名单。其中白名单更加简单和有效。一种白名单解决方案就是SafeHTML,它足够智能能够识别有效的HTML,然后就可以去除任何危险的标签。这个需要基于HTMLSax包来进行解析。安装使用SafeHTML的方法:
1、前往 下载最新的SafeHTML
2、将文件放入服务器的classes 目录,这个目录包含所有的SafeHTML和HTMLSax库
3、在自己的脚本中包含SafeHTML类文件
4、建立一个SafeHTML对象
5、使用parse方法进行过滤
?php/* If you're storing the HTMLSax3.php in the /classes directory, along
with the safehtml.php script, define XML_HTMLSAX3 as a null string. */define(XML_HTMLSAX3, '' );// Include the class file.require_once ( 'classes/safehtml.php' );
// Define some sample bad code.
$data = This data would raise an alert
" ;// Create a safehtml object.$safehtml = new safehtml();// Parse and sanitize the data.$safe_data = $safehtml -parse( $data );// Display result. echo 'The sanitized data is ' . $safe_data ;
?
SafeHTML并不能完全防止XSS攻击,只是一个相对复杂的脚本来检验的方式。
使用单向HASH加密方式来保护数据
单向hash加密保证对每个用户的密码都是唯一的,而且不能被破译的,只有最终用户知道密码,系统也是不知道原始密码的。这样的一个好处是在系统被攻击后攻击者也无法知道原始密码数据。加密和Hash是不同的两个过程。与加密不同,Hash是无法被解密的,是单向的;同时两个不同的字符串可能会得到同一个hash值,并不能保证hash值的唯一性。MD5函数处理过的hash值基本不能被破解,但是总是有可能性的,而且网上也有MD5的hash字典。
使用mcrypt加密数据MD5 hash函数可以在可读的表单中显示数据,但是对于存储用户的信用卡信息的时候,需要进行加密处理后存储,并且需要之后进行解密。最好的方法是使用mcrypt模块,这个模块包含了超过30中加密方式来保证只有加密者才能解密数据。
?php$data = "Stuff you want encrypted" ;
$key = "Secret passphrase used to encrypt your data" ;
$cipher = "MCRYPT_SERPENT_256" $mode = "MCRYPT_MODE_CBC" ;function encrypt( $data, $key , cipher , $mode ) {// Encrypt datareturn (string) base64_encode ( mcrypt_encrypt ( $cipher , substr (md5( $key ),0,mcrypt_get_key_size( $cipher , $mode )), $data , $mode , substr (md5( $key ),0,mcrypt_get_block_size( $cipher , $mode )) ) );
}function decrypt( $data , $key ,$cipher , $mode ) {// Decrypt data
return (string) mcrypt_decrypt ( $cipher , substr (md5( $key ),0,mcrypt_get_key_size( $cipher , $mode )), base64_decode ( $data ), $mode , substr (md5( $key ),0,mcrypt_get_block_size( $cipher , $mode )) );
}?
mcrypt函数需要以下信息:
1、待加密数据
2、用来加密和解密数据的key
3、用户选择的加密数据的特定算法(cipher:
如 MCRYPT_TWOFISH192
,MCRYPT_SERPENT_256, MCRYPT_RC2
, MCRYPT_DES
, and MCRYPT_LOKI97
)
4、用来加密的模式
5、加密的种子,用来起始加密过程的数据,是一个额外的二进制数据用来初始化加密算法
6、加密key和种子的长度,使用mcrypt_get_key_size函数和mcrypt_get_block_size函数可以获取如果数据和key都被盗取,那么攻击者可以遍历ciphers寻找开行的方式即可,因此我们需要将加密的key进行MD5一次后保证安全性。同时由于mcrypt函数返回的加密数据是一个二进制数据,这样保存到数据库字段中会引起其他错误,使用了base64encode将这些数据转换为了十六进制数方便保存。
;
45. 从零开始学springboot撸一个Xss过滤器-注解实现
上章通过Filter实现了Xss全局过滤器
可能小伙伴还有点不满, 全局意味着“一刀切”,
虽然我们也有白名单黑名单设置, 但是, 白名单黑名单针对的是整个方法或整个实体类
举个例子, 我定义了个实体
可能业务上有限制(比如name限制了只有5个字符长),
那么name其实不可能存在Xss注入风险了,
程序只需要对info和des属性做转义即可
如果采用Filter, 意味着People的所有属性都会检测转义, 好像没啥必要!
那么, 可以针对性的指定字段进行Xss的过滤转义么?
为了应对这样的需求, 咸鱼君采用Aop注解来实现这么个Xss过滤器.
PS: 和Filter一样, 我们统一对入参Xss过滤, 确保参数的处理方式统一! 所以, 程序中获取的参数值都是转义后的数据!!
废话不多说, 往下看!
加入必要的pom依赖
针对方法, 参数, 属性分别定义三个注解
XssMethod
XssParam
XssField
针对注解实现切面Aspect
XssAspect
注释写的很详细, 就不多废话了!
接下来我们写个案例来测试测试
首先在启动类上启用切面
定义一个实体People, 并对info,des属性加上注解进行xss过滤
最后编写controller
json方式
键值对方式