当前位置: 代码迷 >> J2EE >> 面试碰到J2EE系统安全性的有关问题应该如何回答
  详细解决方案

面试碰到J2EE系统安全性的有关问题应该如何回答

热度:45   发布时间:2016-04-17 23:25:37.0
面试碰到J2EE系统安全性的问题应该怎么回答?
面试被问到web security, vulnerabilities,secure coding practices之类J2EE系统安全性的问题。
我说只知道SQL injection,还有哪些可说的?

如果回答XSS,那么应该怎么解决XSS呢?
------解决思路----------------------
这个分多方面 ,比如:
        1、登录验证码;
        2、登录权限验证;
        3、替换浏览器访问地址。
------解决思路----------------------
一句话,一切来自客户端的数据都是“可疑的”或者“危险的”, 所有来自客户端的数据都必须经过审查,才可以保存入库,或者在入库的时候不审查,但是出库的时候,也就是说数据要重新展现在页面上的时候,进行审查过滤。。。
所有,包括的不仅仅是用户通过表单提交的数据,也包括HTTP报头里面的字段信息,比如REFER或者X-FORWARDED-FOR之类的一切可由客户端自定义的HTTP报头,因为请求并不一定是浏览器发出去的,也有可能是专业人士用其他程序发出去的HTTP请求,所以不要想着这些报头是不可改变的。

sql injection,任何时候都不要拼接SQL语句 
xss,过滤< > 等HTML标记字符,还有要注意,你要输出的东西是处HTML的什么地方,比如说
<div>{{这里是你要输出的内容}}</div>
,那么这里的内容 ,你可能只需要过滤< > 就可以防止这里被插入XSS代码

但是如果你输出的内容处于一个标记中,也就是这个标记的属性:
<div data="{{这里是你要输出的内容}}"></div>
,那这里的内容,就还要过滤的就是引号之类的了,这时如果输出的东西是
" onmouseover="alert(/xss/)" xss=",就会产生下面的现象
<div data="" onmouseover="alert(/xss/)" xss=""></div>

csrf,加上REFER判断跟TOKEN检查,一切来自站外的POST全部拒绝,没有TOKEN的POST也拒绝。

上面都是最基础的东西了, 安全工程很复杂的。。
------解决思路----------------------
我们这边就是检查token了
  相关解决方案