永发信息网

如何解决跨站点请求伪造

答案:1  悬赏:0  手机版
解决时间 2021-02-25 19:22
如何解决跨站点请求伪造
最佳答案
appscan修订建议:
如果要避免 CSRF 攻击,每个请求都应该包含唯一标识,它是攻击者所无法猜测的参数。 建议的选项之一是添加取自会话 cookie
的会话标识,使它成为一个参数。服务器必须检查这个参数是否符合会话 cookie,若不符合,便废弃请求。 攻击者无法猜测这个参数的原因是应用于 cookie
的“同源策略”,因此,攻击者无法伪造一个虚假的请求,让服务器误以为真。 攻击者难以猜测且无法访问的任何秘密(也就是无法从其他域访问),都可用来替换会话标识。
这可以防止攻击者设计看似有效的请求。
比较容易想到的有下面两种思路:
方案一:每个请求都带上一个由服务器生成的随机参数。然后在服务器端和对该参数,如果和下发的随机数不同,则可以认为有人在伪造请求。因为攻击者无法知道他本次攻击的http请求需要带什么样的随机数才是有效的。
方案二:跨域伪造之所以能成功,主要决定因素是攻击者的页面和稍候被打开的目标页面共享session信息。受害者登录后,攻击者的页面通过ajax向被攻击网站的关键业务发起的请求便自动带上了合法的session信息。但是,根据javascript的同源策略可知,挂有A域名的窗口,不能获取挂有B域名窗口中的任何信息,不管B是如何被打开的。据此,我们可以在客户端的每个要保护的业务链接上增加一个参数sessionId,这个参数可以通过js从cookie中获得。然后,在服务器端获取此参数,并同真正的sessionId做对比,如果不同,则认为请求是伪造的。因为攻击者的窗口无法从被攻击网站的窗口中取得这个sessionId。
方案二的实现: 定义一个过滤器, 对页面传递过来的sessionid和实际sessionid进行比较, 相同则通过
1. 定义过滤器
<filter>
<filter-name>SessionFilter</filter-name>
<filter-class>com.xxx.common.security.auth.SessionFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SessionFilter</filter-name>
<url-pattern>/login.do</url-pattern>
</filter-mapping>
@Override
public void doFilter(ServletRequest servletrequest, ServletResponse servletresponse, FilterChain filterchain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletrequest;
HttpServletResponse response = (HttpServletResponse) servletresponse;
String clientSessionId = servletrequest.getParameter("ssid");
String serverSessionId = request.getSession().getId();
if (serverSessionId.equals(clientSessionId)) {
filterchain.doFilter(request, response);
} else {
response.sendRedirect("/common/dataError");
}
}
2. 请求时增加sessionid参数
<input type=hidden id="ssid" name="ssid" value="<%=request.getSession().getId()%>">
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
去KTV上班怎么都要交几百块钱啊?为什么?
法律知识咨询经济纠纷被人家把大门锁了
襄阳恒信美华汽车销售服务有限公司我想知道这
有人曾把一战期间中国民族工业的发展称为“黄
艾力活羊烧烤(二店)地址在哪,我要去那里办事
近代日本从锁国到开国的思想转变中,哪些因素
魅力·起点造型徐州NO.1我想知道这个在什么地
临沂批发市场藤椅在哪有卖的??
每月有一千快钱空闲的钱, 怎么样才能让这一
高中数学:这个式子在计算时,把a换成sinA直
白泉中心小学地址在什么地方,想过去办事
模型飞机的三四通道六通道是什么意思我想买架
高达exvsforce是啥游戏 pc平台上有么
天源天津寿衣花圈店怎么去啊,有知道地址的么
做要玻尿酸水疗后摸小春的话要不要洗脸?
推荐资讯
有AAAB的词语吗?
1983年阳历2月16日是什么星座
辣炒河粉怎么做
单选题Neithersidewaswillingtogivein
头发简单的四叶草编法
骨肉相连除了烤..还能有别的做法么?
下新这个地址在什么地方,我要处理点事
月亮湾客栈在哪里啊,我有事要去这个地方
秦家桥我想知道这个在什么地方
湖南七里香米业有限公司这个地址在什么地方,
馨艺花坊这个地址在什么地方,我要处理点事
林州市东姚镇西峪学校这个地址在什么地方,我
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?