189 8069 5689

Web安全之XML注入的示例分析-创新互联

小编给大家分享一下Web安全之XML注入的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

创新互联建站网站建设公司一直秉承“诚信做人,踏实做事”的原则,不欺瞒客户,是我们最起码的底线! 以服务为基础,以质量求生存,以技术求发展,成交一个客户多一个朋友!专注中小微企业官网定制,网站设计、成都网站设计,塑造企业网络形象打造互联网企业效应。

XML注入攻击,和SQL注入的原理一样,都是攻击者输入恶意的代码来执行自身权限以外的功能。 XML是存储数据的一种方式,如果在修改或者查询时,没有做转义,直接输入或输出数据,都将导致XML注入漏洞。攻击者可以修改XML数据格式,增加新的XML节点,对数据处理流程产生影响。

攻击

下面是一个保存注册用户信息为XML格式的例子:

final String GUESTROLE = "guest_role";
...
//userdata是准备保存的xml数据,接收了name和email两个用户提交来的数据。
String userdata = ""+
                request.getParameter("name")+
                ""+
                request.getParameter("email")+
                "";
//保存xml
userDao.save(userdata);

可以看到,这段代码没有进行任何的过滤操作。一个普通用户注册后,会产生这样一条数据记录:



    user1
    
    user1@a.com
    

攻击者输入自己email时,可以输入如下代码:

user1@a.comlfuser2@a.com

最终用户注册后,数据就变成了:



    user1
    
    user1@a.com


    lf
    user2@a.com
    

可以看到,多出了一条role=“admin_role”的管理员lf。达到攻击目的。

防御

还是那句老话,有攻击就有防御。防御的原理其实也很简单,就是对关键字符串进行转义:

& --> &
 < --> <
 > --> >
 " --> "
 ' --> '

在XML保存和展示之前,对数据部分,单独做转义即可:

String userdata = ""+
                StringUtil.xmlencode(request.getParameter("name"))+
                ""+
                StringUtil.xmlencode(rrequest.getParameter("email"))+
                "";

这样就解决啦。

以上是“Web安全之XML注入的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


网站栏目:Web安全之XML注入的示例分析-创新互联
文章起源:http://cdxtjz.cn/article/djejog.html

其他资讯