xml解析是开发人员日常开发中常用的一种数据传递格式,但是很多开发人员并不知道xml解析中的实体类解析。一旦引入实体类解析,可以通过构造恶意内容,就可能导致任意文件读取、系统命令执行、内网端口探测、攻击内网网站等危害。
我们来看一下什么样子的格式是xml格式:
这是我们主备的xml实体类解析的网站:
![eb417a69c950e4528c0707d46c2a52b7.png](https://i-blog.csdnimg.cn/blog_migrate/6fe85888fd1577ff0653bb8a1327ae80.jpeg)
通过抓包,我们可以看传递过来的格式:
![a83df87c0b9e4f9a0ea689057424fe7c.png](https://i-blog.csdnimg.cn/blog_migrate/ce8216e880217bff6918811a0f0107c2.jpeg)
这样以xml开头的并且里面是标签形式的,就是xml格式,这是如果没有禁止解析实体类的话,我们就可以利用实体类解析的形式读取我们系统的文件。
由于网站发布在windows系统中,我们来读取windows下的boot.ini
![08adb60321c85ead2e69080648c52764.png](https://i-blog.csdnimg.cn/blog_migrate/b343ffb9e070a908243f5c05c41d0a37.jpeg)
这样我们就能读取出我们知道路径的系统文件,当然如果你知道网站代码的路径你也是可以读取出网站代码的。其中包括数据库配置文件,代码配置文件等都是可以读取出来的。
针对于还不知道实体类解析的开发小伙伴,在使用大xml格式进行传递数据的时候一定要注意了,如果你业务不需要进行实体类解析,那么一定要关闭实体类解析这个,至于如何关闭,针对不同的开发语言不用的关闭方法,下一篇文章会为大家讲解。