java 宽字节_宽字节注入
宽字节注入
原理:宽字节(两字节)带来的安全问题主要是吃ASCII字符(一字节)的现象,使用一些特殊字符来”吃掉“经过转义符 “ \ ” 。
在重新详细了解宽字节注入之前,我认为宽字节注入只是出现在网站使用GBK编码的时代,现在已经很少出现了,但是实际上宽字节不只是出现在GBK编码中。
在PHP中,通过iconv()进行编码转换时,也可能出现宽字节注入。
还有一个误区:
这里的编码问题不是出现在HTML页面编码,而是与数据库的编码形式有关,一般我们在建立一个数据库的时候会让我们选择数据库的编码形式,所以有时候网站虽然是UTF-8写的,但是如果数据库是GBK的形式,也会出现宽字节,现实这样建站的奇葩应该很少叭。。。
宽字节编码有哪些:
GB2312、GBK、GB18030、BIG5、Shift_JIS等这些都是常说的宽字节
MySQL中用于转义的函数有:
addslashes、mysql_real_escape_string、mysql_escape_string以及后面在高版本被去除的magic_quote_gpc
绕过思路:
因为宽字节注入主要是吃掉 \ ,所以一般时候加一个 %df 这种就可以吃掉,其实加三个%df也可以吃掉,只要是奇数个%df即可。
防御方法:
1.设置character_set_client=binary,将数据以二进制形式传递
2.矫正人们对于mysql_real_escape_string的误解,单独调用set names gbk和mysql_real_escape_string是无法避免宽字符注入问题的。还得调用mysql_set_charset来设置一下字符集。
3.谨慎使用iconv来转换字符串编码,很容易出现问题。只要我们把前端html/js/css所有编码设置成gbk,mysql/php编码设置成gbk,就不会出现乱码问题。不用画蛇添足地去调用iconv转换编码,造成不必要的麻烦。
参考连接:
1
2
java 宽字节_宽字节注入相关推荐
- java截取中文_按字节截取混有中文汉字的字符串 中英文字符串截取
[java]代码库import java.io.UnsupportedEncodingException; public class CutString { /** * 判断是否是一个中文汉字 * * ...
- java过滤4字节_乐字节Java8核心特性实战之四:方法引用
Java8 中引入方法引用新特性,用于简化应用对象方法的调用, 方法引用是用来直接访问类或者实例的已经存在的方法或者构造方法. 方法引用提供了一种引用而不执行方法的方式,它需要由兼容的函数式接口构成的 ...
- java 面向对象多态_乐字节Java面向对象三大特性以及Java多态
以上就是本次学习的6大任务.我们依次来看. 1 Object类 Object类是所有Java类的根基类. 如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类. cla ...
- java数青蛙_『字节跳动LeetCode联合周赛』--周赛185(JavaScript) | OFEII
前言
- 高位字节 低位字节_所有字节从何而来?
高位字节 低位字节 by Colt McAnlis 通过Colt McAnlis 所有字节从何而来? (Where do all the bytes come from?) Great questio ...
- 大端字节序码流中取出2字节_产生字节码
大端字节序码流中取出2字节 在这篇文章中,我们将看到如何为我们的语言生成字节码. 到目前为止,我们已经看到了如何构建一种语言来表达我们想要的东西,如何验证该语言,如何为该语言构建编辑器,但实际上我们还 ...
- python转为字节_将字节转换为python中的位
I am working with Python3.2. I need to take a hex stream as an input and parse it at bit-level. So I ...
- MySQL宽字节注入漏洞分析_宽字节注入
概念 单字节字符集: 所有的字符都使用一个字节来表示,比如 ASCII 编码. 多字节字符集: 在多字节字符集中,一部分字节用多个字节来表示,另一部分(可能没有)用单个字节来表示. 两位的多字节字符有 ...
- Java char所占用的字节_关于unicode:为什么Java char原语占用2个字节的内存?
有什么理由为什么Java char原始数据类型为2个字节而不像C为1个字节? 谢谢 简短的答案是因为它们无聊:他们应该使用32位字符. 不,他们不应该使用32位宽的字符. 这将使开销更大! @ vy3 ...
最新文章
- 浅谈HTTP中Get与Post的区别
- python小项目实例流程-Python小项目:快速开发出一个简单的学生管理系统
- android file.createnewfile ioexception
- D盘提示RAW文件如何找回
- 全志android启动串口无打印,CSK.Blog-给MK802(USB大小的Android4.0小PC)引出串口信号,变成ARM开发版...
- 突然听到一只公鸡的局域网聊天软件
- 机器学习速成课程 | 练习 | Google Development——编程练习:Pandas 简介
- 一起玩转SQL Server 2012 下的分析服务
- 实现不规则形状的按钮
- artcam 9.0英文版本下载_魔兽9.0暗影国度测试服前瞻 可能存在的仙狐坐骑详解
- 李雅普诺夫稳定性、李雅普诺夫第一法、李雅普诺夫第二法及李雅普诺夫函数
- 为什么我们需要更注重源代码安全?
- 移动端车牌识别要做到那一步?
- JavaWeb在线刷题系统
- OGG-01008 Extract displays Discarding bad record (discard recs=1) when using filter or where clause
- 关于使用VMware Workstation Pro16 创建Kali-Linux虚拟环境的操作办法以及库源的配置
- android 抠图功能,Android抠图工具,天天P图
- Not allowed to access normals on mesh ‘Combined Mesh (root: scene)‘ (isReadable is false...报错解决方法
- python解一元二次方程虚根_怎么用python解一元二次方程
- 大疆无人机安卓Mobile Sdk开发(三)制定航点任务WaypointMission