CSRF防护(找到自己的点赞文章)
【摘要】 想找到一篇前几天在博客这边点赞的文章,愣是没找到入口,发现api/blog/get-vl可以获得某一篇博客自己是否点赞, 但是用restles测试发现总是返回false信息,与实际不符;怀疑是不是由于_csrf保护导致的就查了查csrf保护相关的机制; 查询记录:https://www.cnblogs.com/digdeep/p/4703298.htmlhttps://segmentfaul...
想找到一篇前几天在博客这边点赞的文章,愣是没找到入口,发现api/blog/get-vl可以获得某一篇博客自己是否点赞, 但是用restles测试发现总是返回false信息,与实际不符;怀疑是不是由于_csrf保护导致的就查了查csrf保护相关的机制;
在目标页面console里直接执行ajax请求就可以获得正确的结果,
感觉不是csrf导致的;
找到自己的所有点赞主要步骤分两步:
登录博客之后,在console里执行下面的代码获取到所有的blogid,其中2788是博客总页数,可以在首页看到
var apiRoot = 'https://bbs.huaweicloud.com/api/blog/info';
var sumContent = '';
var getarray = [];
var blogObject = { };
blogObject.page = 1;//默认从第一页开始
blogObject.category = "all";//文章类别
blogObject.tag = "";//选择标签
blogObject.defaultUrl = "//static.huaweicloud.com";
blogObject.bbsimg = "https://bbs.huaweicloud.com";
for(var i=1;i<=1394;++i){
blogObject.page = i;
getarray.push($.ajax({
type: "post",
data: blogObject,
dataType: "json",
url: apiRoot,
success: function (data) {
sumContent += data.content;
}
}));
}
var getarray1 = [];
$.when.apply($, getarray).done(function() {
for(var i=1395;i<=2788;++i){
blogObject.page = i;
getarray1.push($.ajax({
type: "post",
data: blogObject,
dataType: "json",
url: apiRoot,
success: function (data) {
sumContent += data.content;
}
}));
}
});
2.第二步,等第一步的请求完成之后,遍历所有blogid查询自己是否点赞
sumContent.match(RegExp('blogid="[^"]+"','g')).forEach(function(item, index){
eval(item);
var s = {};
s._csrf = getAinfo();
s.blogId = blogid;
$.ajax({
type: "post",
url: 'https://bbs.huaweicloud.com/api/blog/get-vl',
data: s,
async: false,
dataType: "json",
success: function (data) {
if(data.is_vote){
console.log('#'+blogid);
}
}
});
});
当然上述的过程可能显得过于长了,尤其是第二步为了保证csrf过程使用了同步请求,可以考虑从自己的历史纪录先过滤出来自博客的链接,再使用第二步判断;或者对第一得到的结果,过滤出其中点赞数大于0的,再进行第二步;此外,由于第二步遍历时间过长,过程中登录可能失效,导致后续请求失败;https://bbs.huaweicloud.com/blogs/加上获取的blogid就是目标地址;
查询记录:
https://www.cnblogs.com/digdeep/p/4703298.html
https://segmentfault.com/a/1190000007932293
https://docs.spring.io/spring-security/site/docs/3.2.0.CI-SNAPSHOT/reference/html/csrf.html
https://bbs.huaweicloud.com/blogs/137394
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)