《Web漏洞防护》读书笔记——第3章,其他注入防护

命令注入防护

在JAV中,可以使用Runtime.getRuntime().exec()和new ProcessBuilder().start()这两种方式执行系统命令。
防护命令注入,遵循的原则:
1.尽量不要以直接调用系统命令的方式来完成程序的某些功能,选择程序开发语言本身提供的功能。
2.如果必须调用系统命令才能完成某些功能,有限使用固定调用的命令,而非根据用户的输入动态生成的命令。
3.如果需要动态生成系统命令,尽量使用白名单的过滤方式,限制系统命令的调用,白名单的设置不要宽泛,尽可能缩小系统能够调用的命令。
另:一般不使用命令编码的方式进行防护,因为:可以被绕过,不能保证足够的安全性;经过编码的命令可能无法解析,影响程序正常运行。

XML注入

XML注入是将不可信的数据插入到XML文件时,由于未进行严格的校验或编码,造成文件中被插入了一些恶意数据,使的XML文件的结构发生了变化,进而影响应用程序正常工作。
例如源代码中File file=new File(“test.xml”),之后攻击者尝试将test.xml中的password通过注入的方式传入123456\nadmin\n时,源代码调用test.xml,会造成新增加了一行元素,将普通账户设置成了admin管理员的角色级别。

XML注入的防护

两种方式:
1.使用标准的XML解析库进行XML文件的写操作。
如,使用JAVA自带的DocumentBuilder来重新输出XML文件。
参数中包含的特殊符号被编码后插入到XML文件中,从而避免了XML注入漏洞的发生。

2.将数据插入到XML文件前进行编码。
使用JAVA Encoder或ESAPI对插入到XML文件中的数据进行编码,其中JAVA Encoder比ESAPI有更多的编码方法。
编码方法:
froXmlContent,forXmlAttribute,forXml,forXmlComment,forCDATA

XPATH注入

XPATH是一门在XML文档中查找信息的语言,可以通过元素或属性进行导航,获取节点、节点集合及文本的值。
XPATH注入,是将不可信的数据直接拼接到查询的语句中,造成XML中数据的泄露。

XPATH注入的防护

对插入到语句中的参数进行编码,使用ESAPI中的encodeForXPATH()方法对参数进行编码。

LDAP注入

LDAP是一种轻量级的目录访问协议,主要用于进行目录资源的搜索和查询,基于X.500标准。
LDAP注入也是将不可信的数据插入到查询语句中,从而造成LDAP中的数据泄露问题。

LDAP注入的防护

1.可以通过过滤的方式实现,比如过滤掉可能会改变LDAP查询语句结构的特殊字符,包括&、|、!=、<、>、*、(、)等。

2.还可以通过编码的方式进行防护,如使用ESAPI的encodeForLDAP()方法对查询条件的构建语句进行更改。

JPA注入

JPA是Java Persistence API的简称,用于将JAVA实体对象持久化存储到数据库中,
JPQL用于查询实体对象,查询后返回的内容为实体或实体的属性。
JPA注入也是将不可信的数据插入到查询语句中,从而造成JPA中的数据泄露问题。

JPA注入的防护

1.使用参数绑定的方式来防止注入的产生。
2.使用其他方法直接获取相关结果。如直接通过用户ID获取相关信息,能够对JPA注入进行防护。

《Web漏洞防护》读书笔记——第3章,其他注入防护相关推荐

  1. 深入分析Java Web技术内幕读书笔记(二)浅析DNS域名解析过程

    上一篇文章<浅析Web请求过程>讲述的是如何发起HTTP请求,对于请求发起过程中很重要的一个步骤--DNS解析过程的描述是一带而过,本篇文章将跟着DNS解析过程来分析域名是如何解析的. 一 ...

  2. 《Spring实战》读书笔记-第4章 面向切面的Spring

    <Spring实战>是学习Spring框架的一本非常经典的书籍,之前阅读了这本书,只是在书本上写写画画,最近整理了一下<Spring实战>的读书笔记,通过博客的方式进行记录分享 ...

  3. 黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第一章 配置python环境

    黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第一章 配置python环境 文章目录 黑帽python第二版(Black Hat Python 2nd ...

  4. 《Spring实战》读书笔记-第3章 高级装配

    <Spring实战>是学习Spring框架的一本非常经典的书籍,之前阅读了这本书,只是在书本上写写画画,最近整理了一下<Spring实战>的读书笔记,通过博客的方式进行记录分享 ...

  5. 《Java编程思想》读书笔记 第十三章 字符串

    <Java编程思想>读书笔记 第十三章 字符串 不可变String String对象是不可变的,每一个看起来会修改String值的方法,实际上都是创建一个全新的String对象,以及包含修 ...

  6. Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据

    Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据 Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据 7.1 程序数据的命名 PL/SQL要求在给数据结构命名的时候应 ...

  7. Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理

    Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理 Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理 ACID原则:即一个事务具有原子性.一致性. ...

  8. PMP读书笔记(第9章)

    大家好,我是烤鸭:     今天做一个PMP的读书笔记. 第九章 项目资源管理 项目资源管理 项目资源管理的核心概念 项目资源管理的趋势和新兴实践 裁剪考虑因素 在敏捷或适应型环境中需要考虑的因素 9 ...

  9. PMP读书笔记(第2章)

    大家好,我是烤鸭:     今天做一个PMP的读书笔记. 第二章 项目运行环境 2.1 概述 2.2 事业环境因素 2.2.1 组织内部的事业环境因素 2.2.2 组织外部的事业环境因素 2.3 组织 ...

  10. PMP读书笔记(第1章)

    大家好,我是烤鸭:     今天做一个PMP的读书笔记. 第一章 引论 1.1 概述指南和目的 1.1.1 项目管理标准 1.1.2 通用词汇 1.1.3 道德与专业行为规范 1.2 概述指南和目的 ...

最新文章

  1. HTML5学习之二:HTML5中的表单2
  2. deepin关机卡在图标界面 mysql Community...10min
  3. 【译文】MySQL InnoDB 事物模型
  4. 机器学习之数学基础(一)~maximum likelihood
  5. python共享文件权限_利用Python实现在同一网络中的本地文件共享方法
  6. 74 param动作
  7. 在python中传统除法运算符是_在Python中使用除法运算符时,如何获取十进制值?...
  8. 让你的CSS更尽完美的技巧
  9. Stereoscopic Player 1.7.4 (SSP) 加载字幕
  10. 检索 COM 类工厂中 CLSID 为 {xxx} 的组件失败,原因是出现以下错误: 8000401a 因为配置标识不正确,系统无法开始服务器进程。请检查用户名和密码。...
  11. 诺基亚 8208支持java么_诺基亚8_诺基亚8208怎么上网_8208 诺基亚
  12. 三诺 n20g 微型计算机,入门级音箱再现经典 三诺N-20GIII评测
  13. 数值积分求解卫星轨道长(Python)
  14. 用tushare数据自定义期货大宗商品指数(2)
  15. 如何管理你的客户?别用会员卡积分打折了,把客户变成粉丝
  16. 叉积 微分 恒等式_不等式(O):常见符号及恒等式
  17. hecto - 手把手教你写个 文本编辑器
  18. 404是什么意思?404错误页面是怎么造成的
  19. 与汇编语言相比c语言,汇编语言与C语言有什么区别
  20. 用python写个根据提示猜词语简单的游戏_python实现简单猜单词游戏

热门文章

  1. xsehll不能删除字符的解决方案
  2. 天梯赛L2-6 树的遍历
  3. pypi.python.org_https://pypi.python.org/pypi/ssh
  4. mysql global_MySQL设置global变量和session变量的两种方法详解
  5. 基于python的毕业论文邮箱收发系统_基于Python实现邮件发送
  6. 电脑更新重启后黑屏_电脑黑屏重启还是黑屏的解决方法教程
  7. 又见回文数 NYOJ781
  8. 计算机维修报价,求一张电脑维护维修价格表
  9. 【hdu2588】求[1-n]中和n的gcd大于m的数的个数(求欧拉函数值)
  10. linux 字符驱动 tty,打通linux的tty驱动的数据链路