当安全遇到java
标题是随便取的
今天看到有篇文章写的是关于java的xss,文中还提到了一个面试题,刚好我曾经也被问到过这个问题。让我不禁想起以往遇到的一些和java相关的安全面试题。
现如今,很多大甲方,由于自己系统大部分都是java写的,所以他招安全人员时,都会提到熟悉java或java代码审计 加分。
那么既然他要求你会,必定面试时会有些针对性的问题,由于我面过两家这样的公司,这里将我需要的一些问题写出来,同时页会写出自己的思路
问题一:mybatis熟悉吗?其中得# 和 $有什么区别
#是参数j化查询,也就是dbc中的预编译
$是字符串拼凑,存在sql注入的风险
问题二:那有了#为什么还要$呢
这个问题我当时是懵逼的,后来才知道别人想问的可能是看你知道不知道哪些情况下不能用#(当然也有可能我到现在都还没get到他的点)
关于这个请看我之前写的博客 https://www.cnblogs.com/jinqi520/p/10083751.html
问题三:java项目测试中发现了几十个或者更多的xss漏洞怎么办
我不记得是不是说的java项目了,就当是java项目吧,反正差别不大,都是加拦截器,这里以java项目为例说下如何加filter
这里需要说下为什么是加filter而不是输出转义或编码,这是因为当项目上线后再在各漏洞处添加输出过滤函数工作量很大且容易遗漏(能出现几十个xss漏洞说明几乎所有地方都没考虑)
1.在web.xml中配置一个filter,拦截所有请求
2.实现该XSSFilter,filter中实现dofilter方法 使用装饰类xssFilterWrapper替换ServletRequest
3.实现xssFilterWrapper继承HttpServletRequestWrapper,并重写getParameterValues方法,对获取参数进行过滤(spring自带的HtmlUtils类的htmlEscape,也可以用OWASP提供的api)
问题四:拦截器和过滤器的区别
1.拦截器是基于java反射机制来实现的,而过滤器是基于函数回调来实现的。(有人说,拦截器是基于动态代理来实现的)
2.拦截器不依赖servlet容器,过滤器依赖于servlet容器。
3.拦截器只对Action起作用,过滤器可以对所有请求起作用。
4.拦截器可以访问Action上下文和值栈中的对象,过滤器不能。
5.在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时调用一次。
问题五:HashMap和Hashtable的区别
HashMap不是线程安全的,但是它的效率会比Hashtable要好很多
问题六:你做java项目的代码审计,一般流程是什么
这个自由发挥吧。。
问题七:java的反序列化漏洞怎么挖
这个我忘记是怎么问的了,大概分为黑盒和白盒:
黑盒一般就是使用ysoserial生成poc(大概十几个),一个个去尝试,当然burp中有插件集成了ysoserial,但是由于长时间未更新,部分poc是用不了的,需要自己改下代码
白盒一般就是看第三方jar包,根据jar选poc,使用ysoserial生成对应的payload,然后利用
问题八:问了一些struts历史cve的调试,等等 未完待续吧,有合适的我再加上了
当安全遇到java的更多相关文章
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题
背景起因: 记起以前的另一次也是关于内存的调优分享下 有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...
- Elasticsearch之java的基本操作一
摘要 接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...
- 论:开发者信仰之“天下IT是一家“(Java .NET篇)
比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...
- 故障重现, JAVA进程内存不够时突然挂掉模拟
背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...
- 死磕内存篇 --- JAVA进程和linux内存间的大小关系
运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...
- 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用
有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...
- Java多线程基础学习(二)
9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...
- Java多线程基础学习(一)
1. 创建线程 1.1 通过构造函数:public Thread(Runnable target, String name){} 或:public Thread(Runnable target ...
- c#与java的区别
经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...
随机推荐
- Java模拟耗时任务异步执行
说明:耗时任务开启单独线程处理,任务线程处理完毕通知主线程 1.回调接口定义 public interface ResponseCallBack { public void printMsg(Stri ...
- web中cookie的使用
一:cookie在浏览器中什么地方查找写入成功 二:如何用js写 function addCookie(name,value,expireHours){ var cookieString=name+& ...
- 安装SQL Server 2008时,安装程序配置检查RebootRequiredCheck时失败
a .重启机器,再进行安装,如果发现还有该错误,请按下面步骤b.在开始->运行中输入regeditc.到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\C ...
- 【转】C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子。
C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子. 标签: c#objectnewlineexceptionbytestring 2010-05-17 01:10 117109人阅读 ...
- BZOJ4665: 小w的喜糖 DP
对于这道题,首先每个人的位置并不影响结果 所以我们可以将相同颜色糖果的人放在一块处理 设 $f_{i,j}$ 表示处理到第 $i$ 种糖果至少有 $j$ 人的糖果和原先的类型相同 枚举当前种类中不满足 ...
- dbconfig.properties
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/数据库名 jdbc.username=root jdbc. ...
- 201771010118《面向对象程序设计(java)》第四周学习总结
1.实验目的与要求 (1) 理解用户自定义类的定义: (2) 掌握对象的声明: (3) 学会使用构造函数初始化对象: (4) 使用类属性与方法的使用掌握使用: (5) 掌握package和import ...
- macos解决Hadoop之Unable to load native-hadoop library
很显然,native-hadoop library不支持macos,如果是Linux就不会有这个问题.在百度上搜了,要下载在macos上编译的native hadoop library,我在网上下载了 ...
- Safari 浏览器模拟iPhone和其他浏览器
1.打开safari浏览器中的偏好设置 2.在偏好设置中,选择高级,勾选在菜单栏中显示开发菜单 3.打开开发,进入响应式设计模式 4.可以选择iphone 或ipad.浏览器等不同模式,进行模拟 5. ...
- jsp 自定义标签解决jsp页面中int时间戳的时间格式化问题
jsp 自定义标签解决jsp页面中int时间戳的时间格式化问题 之前在项目中根据需求,需要自定义标签,经过查询w3c文档,自己也踩了一些坑,特此记录自定义标签的步骤,下面就以我之前的一个例子中的定义一 ...