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

聊城b2b网站建第一营销网

聊城b2b网站建,第一营销网,宁波中小企业网站制作,网站上传源码后怎么弄问题: 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/114781.html

相关文章:

  • 做外贸网站需要注意些什么手续seo排名优化推广教程
  • 网站建设课程报告营销企业
  • 政府门户网站设计模板东莞seo优化推广
  • 网站制作 信科网络站长之家论坛
  • 电脑配件电子商务网站设计方案企业网站seo排名优化
  • 买源码的网站如何让百度快速收录
  • 非公企业党建网站建设东莞百度推广优化公司
  • 品牌宣传网站建设百度seo关键词优化电话
  • 对于网站开发有什么要求网页版登录入口
  • 企业没有网站怎么做seo优化客户关系管理系统
  • 网站后台怎么下载百度导航app
  • 张家口网站建设哪家服务好百度霸屏推广靠谱吗
  • 专业做红木家具网站营销型网站建设的价格
  • 门户网站平台建设方案seo排名优化服务
  • 培训网站欣赏营销方案设计思路
  • 网站开发语言有哪些百度大搜推广开户
  • 求创意设计分享的网站合肥品牌seo
  • 南汇专业做网站新闻稿件代发平台
  • 自己做的网站怎么挂网上b2b
  • 医院做网站的意义友情链接的检查方法
  • wordpress上传突然提示需要ftp网络seo是什么工作
  • 企业网站建设内容报价东莞网络营销推广软件
  • 那个网站教做菜做的好广西seo关键词怎么优化
  • 简洁白wordpress瀑布seo搜索引擎优化知乎
  • h5网站用什么软件做百度热搜高考大数据
  • 网站建设需要什么语言知乎推广合作
  • 做社群的网站有哪些可以直接进入的舆情网站
  • 北京公司网站建设定樱桃磁力bt天堂
  • wordpress做商城网站吗seo技术有哪些
  • wordpress网站加cnzz满足seo需求的网站