当前位置: 首页 > wzjs >正文

网站空间商排行榜郑州网站建设方案报价

网站空间商排行榜,郑州网站建设方案报价,网站剪辑培训机构排名,宣传片拍摄制作公司报价明细问题: XPath 注入是指数据从一个不可信赖数据源进入程序,用于动态构造一个 XPath 查询,获取权限信息 的访问权并更改这些信息的一种攻击方式。 例如:以下代码片段中,可动态地构建并执行一个 XPath 查询&#xf…

问题:

XPath 注入是指数据从一个不可信赖数据源进入程序,用于动态构造一个 XPath 查询,获取权限信息
的访问权并更改这些信息的一种攻击方式。
例如:以下代码片段中,可动态地构建并执行一个 XPath 查询,为指定的帐户 ID 检索电子邮件地址。
String acctID = request.getParameter("acctID");
String query = null;
if(acctID != null) {
StringBuffer sb = new StringBuffer("/accounts/account[acctID='");
sb.append(acctID);
sb.append("']/email/text()");
query = sb.toString();
}
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true);
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document doc = builder.parse("accounts.xml");
XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
XPathExpression expr = xpath.compile(query);
Object result = expr.evaluate(doc, XPathConstants.NODESET);
正常情况下(例如搜索属于帐号 1 的电子邮件地址),此代码所执行的查询如下所示:
/accounts/account[acctID='1']/email/text()
如果攻击者为 acctID 输入字符串 1' or '1' = '1 ,则该查询会变成:
/accounts/account[acctID='1' or '1' = '1']/email/text()
附加条件 1' or '1' = '1 会使 where 从句永远评估为 true ,因此该查询在逻辑上将等同于一个更为简化的
查询:
//email/text()
这样就可以查询到文档中存储的所有电子邮件地址。
修复:
造成 XPath 注入的根本原因在于攻击者能够改变 XPath 查询的上下文,导致程序员期望解释为数据的
某个数值被解释为命令了。为了防止攻击者侵犯程序员的各种预设情况,可以使用白名单的方法,确保
XPath 查询中由用户控制的数值完全来自于预定的字符集合,不包含任何 XPath 元字符。如果由用户控制
的数值要求它包含 XPath 元字符,则使用相应的编码机制转义或删除这些元字符。
例如:以下代码片段中,将不可信赖的数据 acctID 转化为一个整形再用于构造 XPath 查询,避免了 XPath
注入攻击。
String acctID = request.getParameter("acctID");
String query = null;
if(acctID != null) {
Integer iAcctID = -1;
try {
iAcctID = Integer.parseInt(acctID);
}
catch (NumberFormatException e) {
throw new InvalidParameterException();
}
StringBuffer sb = new StringBuffer("/accounts/account[acctID='");
sb.append(iAcctID.toString());
sb.append("']/email/text()");
query = sb.toString();
}
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true);
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document doc = builder.parse("accounts.xml");
XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
XPathExpression expr = xpath.compile(query);
Object result = expr.evaluate(doc, XPathConstants.NODESET);
http://www.dtcms.com/wzjs/695073.html

相关文章:

  • 企业网站的建设要注意哪些方面怎样弄网站
  • 网站欣赏 公司网站案例哪里设计公司vi
  • 协会网站建设及维护网络公司网站设计多少钱
  • 如何看一个网站是用哪个语言做的避免网站 404
  • 静安区网站开发业务推广网站
  • 手机版 网站建设济南网站制作 泉诺
  • 自己做视频网站有点卡网站建设的工作职责是什么
  • 书店手机网站模板成品图片的网站有哪些
  • 做网站 服务器如何制作线上投票
  • wordpress网站的CDN设置wordpress 婚礼邀请
  • 58同城济南网站建设wordpress相对路径设置
  • 漂亮的手机网站模板vi设计哪些品牌比较好
  • 站长网站素材做网站关于创新的
  • 网站建设公司理念人人车网站建设费用
  • 传奇网站装备动态图怎么做wordpress 公众号 采集
  • 做整合营销的网站辽宁省建设工程交易网
  • 网站建设有用吗做图片网站 服务器
  • 怎么在网上找做网站的客户网页创意的再设计
  • ssh可以做wap网站么如何做网站规划
  • 世界网站制作阿里巴巴 网站 建设
  • 网站静态和动态区别是什么上海恒鑫网站建设
  • 网站新闻详细页面设计佛山网站推广软件
  • 优化站诊断电子商务网站建设含代码
  • 网页封装网站怎么做的接口1千元以下做网站的公司
  • CMCAP官方网站外贸网站建设大概多少钱
  • 湖南建设工程竣工备案表查询网站网站搜索引擎拓客
  • 重点专业建设验收网站html5单页面网站建设
  • 绵阳公司网站制作公司宣传软文怎么写
  • win7做系统网站哪个好离石做网站
  • 济南网站APPxamp wordpress