当安全遇到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#多用于业务系统的开发 ...
随机推荐
- js判断是否在微信中打开
var ua = navigator.userAgent.toLowerCase(); if(ua.match(/MicroMessenger/i)=="micromessenger&quo ...
- 一起学爬虫——使用Beautiful Soup爬取网页
要想学好爬虫,必须把基础打扎实,之前发布了两篇文章,分别是使用XPATH和requests爬取网页,今天的文章是学习Beautiful Soup并通过一个例子来实现如何使用Beautiful Soup ...
- MyCat-简介
一MyCat简介 java编写的数据库中间件 Mycat运行环境需要JDK. Mycat是中间件.运行在代码应用和MySQL数据库之间的应用. 前身 : corba. 是阿里开发的数据库中间件.实现M ...
- 堡垒机jumpserver测试记录--安装
一步一步安装(CentOS) 基本都是官网的东西,只是有些坑做了记录. http://docs.jumpserver.org/zh/docs/step_by_step.html 环境 系统: Cent ...
- 【整理】Java 8新特性总结
闲语: 相比于今年三月份才发布的Java 10 ,发布已久的Java 8 已经算是老版本了(传闻Java 11将于9月25日发布....).然而很多报道表明:Java 9 和JJava10不是 LTS ...
- 关于Android文件Apk下载的那点事
1.Android文件Apk下载变ZIP压缩包解决方案 如果你的下载服务器为Nginx服务器,那么,在Nginx安装目录下的conf/mime.types文件的对应位置,加上以下一行语句,指定APK文 ...
- __x__(4)0905第二天__软件架构
软件架构 C/S 架构,客户端/服务器,用户通过客户端使用软件. 一般的应用软件都是 C/S 架构,如 QQ,360 等等. C 为 Client,用户电脑使用的软件. S 为 Server,服务器, ...
- __x__(8)0906第三天__乱码问题
需要知道: 计算机只认 0 1 任何内容,计算机都会以 0 1 去存储 所以 0 1 与内容的编码方式/解码方式需要依照一定的规则,实现 0 1 与内容之间的转换. 字符集:一定的规则,由编码/解码采 ...
- (72)Wangdao.com第十二天_JavaScript 错误处理机制
1. Error 实例对象 JavaScript 解析或运行时,一旦发生错误,引擎就会抛出一个错误对象. JavaScript 原生提供Error构造函数,所有抛出的错误都是这个构造函数的实例. va ...
- (89)Wangdao.com第二十二天_JavaScript 属性
属性 属性本身是一个对象(Attr 对象) Element.attributes 返回一个类似数组的动态对象,成员是该元素标签的所有属性节点对象 属性的实时变化都会反映在这个节点对象上. 其他类型的 ...