微博安全是一个系统问题包括服务器安全,应用安全开发注意事项

新浪安全部门一直致力于推动开放平台上的产品安全,使微博应用拥有更好的用户体验和具备更安全的功能。从目前的情况来看,我们发现部分应用存在下面几种常见的安全漏洞或缺陷,这些安全漏洞除了对应用本身带来影响外,也会给用户带来损失。

app secret泄露

app_secret是应用请求开放平台生成access_token的唯一认证,使用app_secret目的是确保应用是开发者本人在使用。

不同的应用在开放平台拥有不同的接口调用资源和API权限。如果该应用的接口资源被盗用,进行发布垃圾信息和加关注等恶意操作,开放平台会对应用的资源和权限进行限制,这样会直接影响到该应用的正常API的调用。因此,对于开发者来说,有必要保护自身应用安全,相应的安全资源不被非法使用,从而保障应用的正常运行。

建议把app secret保存在应用服务端,为了更好的保护你的应用安全,建议在管理中心/安全设置中绑定应用的服务器ip。

d276398f7f2b53b3ea4714c84d590af8.png

如果发现应用的app secret被泄露,请立即到应用管理中心进行重置

http://open.weibo.com/apps/

app secret泄露的常见原因:

1、app secret出现在页面源代码或者url中,导致直接查看源代码即获得。

2、app_secret保存在客户端本身程序中,所有的本机应用程序(如iOS,Android或Windows桌面应用程序),都可以反编译的代码获得。

3、未使用HTTPS安全传输协议,攻击者通过网络嗅探获得。

access_token泄露

access_token是用户通过应用访问开放平台的会话标识,应用程序要做好保护工作,防止被第三方窃取。

常见的access_token泄露途径:

1、access_token保存在cookie或者页面代码中,攻击者通过xss漏洞窃取用户token。

2、应用服务器存在sql注入漏洞,导致用户token泄露。

绑定微博用户CSRF漏洞

如果你的应用有自己的帐户体系,并且有绑定微博用户登陆这个功能,请检查绑定接口是否有防止CSRF攻击的功能。授权接口state参数的可以用来防止授权过程CSRF攻击,具体详细的使用方法,可以参考最新版SDK代码,https://github.com/ElmerZhang/WeiboSDK。

加关注发微博CSRF漏洞

微博应用的CSRF漏洞常见于加关注和发微博等写入接口处,用户看到的现象是微博多了一些莫名的关注,或者转发了一些营销微博。

开发者可以通过检查referer是否合法或者在表单中加入csrf_token方式来防御CSRF攻击。

用户身份伪造

完成OAuth 2.0授权认证后,应用方可获得象征用户身份的access_token,一般直接用于接口调用。但部分应用需要获得用户的uid,作为同自身账号体系做关联的认证凭据,以提供更多应用自身的服务内容。典型情况如使用了微博sso sdk的手机应用、网络存储服务型应用。

在此场景下,常见的漏洞有:

1、 客户端直接以授权接口返回的uid或提取access_token中的uid,回传应用自身服务器作为认证凭据。该传输过程可被非法拦截,通过篡改uid伪造用户身份。

2、 客户端将access_token回传自身服务器,服务器提取其中的uid作为认证凭据,但并未校验该access_token的合法性。此时,通过骗取A用户授权X应用,获取access_token后传入Y应用服务器,便可拿到Y应用的A用户凭证,访问Y应用中该用户的服务内容。

修复建议:

1、 不要直接使用没有授权信息的uid来换取自身服务的认证凭据,只能使用access_token进行。

2、 服务器端提取access_token中的uid,需调用开放平台的OAuth2/get_token_info接口。使用该接口时,需一并查证该access_token所属的appkey是否为自己的客户端应用appkey。Appkey来源相符的才允许换取自身服务的认证凭据。

3、 对所有已存入的绑定access_token进行核查,发现access_token中的新浪uid和绑定新浪uid不一致、非自身客户端应用appkey授权的access_token、过期access_token等异常情况均需要全部撤消,要求这些异常用户重新授权登录。

点击劫持漏洞

恶意站点通过iframe的方式嵌套微博应用站点,利用HTML透明覆层等技术,劫持用户的点击操作。从而达到诱导用户执行恶意加关注目的。

修复建议:

1、不需要被iframe的应用,可选用下面之一的方法。

a、header头声明 header( "X-FRAME-OPTIONS:DENY");

b、JS判断当前页面是否被iframe,示例代码: if(top.location!=location){top.location=locaiton;}

2、需要被iframe的产品。

a、判断父窗口是否是允许的页面;

b、弹出加关注确认,并给出被关注者的昵称。

应用安全涉及的范围比较广,开发者除了要注意避免掉上面常见的安全问题外,也应该关注最新安全趋势,了解自身产品的安全缺陷,更重要的提升产品和开发人员的安全意识,只有这样,才尽可能的减少安全问题产生。如果出现安全漏洞,可以及时联系我们,我们会第一时间提供解决方案。

欢迎大家和我们保持联系 @新浪安全或进入微博开放平台问答系统。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/445682.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL优化学习笔记

----一、MySQL架构介绍-01_课程简介02_MySQL简介03_RPM安装04_ROOT密码设置和开机自启动05_安装位置06_修改字符集07_MySQL配置文件08_MySQL逻辑架构简介09_存储引擎简介-二、索引优化分析-10_SQL性能下降原因11_SQL执行加载顺序12_七种JOIN理论13_七种JOIN的SQL编写14_索引是什…

回溯算法学习笔记

学习资料来源 代码随想录 - 关于回溯算法,你该了解这些! 什么是回溯法 回溯(backtracking)法又称回溯搜索法,它是一种搜索的方式。 回溯法不容易,但回溯法就是暴力解法。 回溯与递归形影不离。 backtra…

《UNIX环境高级编程 3rd》笔记(1 / 21):UNIX基础知识

文章目录引言UNIX体系结构登录登录名shell文件和目录文件系统文件名路径名工作目录起始目录输入和输出文件描述符标准输入、标准输出和标准错误不带缓冲的IO标准IO程序和进程程序进程和进程ID进程控制线程和线程ID出错处理出错恢复用户标识用户ID组ID附属组ID信号时间值系统调用…

《集体智慧编程》笔记(2 / 12):提供推荐

Making Recommendations 文章目录协作型过滤搜集偏好寻找相近的用户欧几里得距离评价皮尔逊相关度评价应该选用哪一种相似性度量方法为评分者打分推荐物品匹配相似商品构建一个基于某数据平台的链接推荐系统数据平台API构造数据集推荐近邻与链接基于物品的过滤构造物品比较数据…

LeetCode - Easy - 637. Average of Levels in Binary Tree

Topic Tree Description https://leetcode.com/problems/average-of-levels-in-binary-tree/ Given the root of a binary tree, return the average value of the nodes on each level in the form of an array. Answers within 10−510^{-5}10−5 of the actual answer w…

在CodeBlocks下配置GoogleTest单元测试框架

环境准备 Windows 10Code::Blocks 20.03Google Test 1.7.0CMake 3.11.0 编译GoogleTest 一、创建一个工作目录D:\gtest,将刚下载的Google Test 1.7.0、CMake 3.11.0的压缩包解压到刚创建的工作目录。 二、进入CMake文件夹的bin下,运行cmake-gui.exe&…

傻子都能看懂的马拉车Manacher

Manachers Algorithm 马拉车算法操作及原理 package advanced_001;public class Code_Manacher {public static char[] manacherString(String str) {char[] charArr str.toCharArray();char[] res new char[str.length() * 2 1];int index 0;for (int i 0; i ! res.len…

简单暴力到dp的优化(萌新篇)

想写一系列文章,总结一些题目,看看解决问题、优化方法的过程到底是什么样子的。 系列问题一:斐波那契数列问题 在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)0,F(1)1, F(n)F(n-1)F(n-2)&#xff08…

LeetCode - Medium - 114. Flatten Binary Tree to Linked List

Topic TreeDepth-first Search Description https://leetcode.com/problems/flatten-binary-tree-to-linked-list/ Given the root of a binary tree, flatten the tree into a “linked list”: The “linked list” should use the same TreeNode class where the right…

简单暴力到dp的优化(初级篇)

一、一维非脑残 1 一个只包含A、B和C的字符串,如果存在某一段长度为3的连续子串中恰好A、B和C各有一个,那么这个字符串就是纯净的,否则这个字符串就是暗黑的。例如:BAACAACCBAAA 连续子串"CBA"中包含了A,B,C各一个&am…

ccpc河北大学生程序设计竞赛dp小总结

近期题目来自校赛,赛前训练,省赛热身,河北ccpc正式比赛。 题目一: 题目描述: 由于第m个台阶上有好吃的薯条,所以薯片现在要爬一段m阶的楼梯. 薯片每步最多能爬k个阶梯,但是每到了第i个台阶&a…

第一次课 优秀作业展示

18级河北师大软件编程训练 很多同学非常认真的完成了作业,这里选出比较优秀的作业展示出来。 注:展示顺序不是排名 为了尊重同学们的劳动成果,并没有要代码,只是截图展示。 范天祚 (傻兔子) 熊静祎&…

二分查找及一般拓展总结

二分-不止是查找哦 二分过程:首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记…

排序算法基本介绍及python实现(含详细注释)

对数组排序可以说是编程基础中的基础,本文对八种排序方法做简要介绍并用python实现。 代码中注释很全,适合复习和萌新学习。这是刚入学自己写的,可能难免比不上标准的写法,但是懒得改了。 文末会放和排序相关的基本拓展总结链接…

二叉搜索树实现

本文给出二叉搜索树介绍和实现 首先说它的性质:所有的节点都满足,左子树上所有的节点都比自己小,右边的都比自己大。 那这个结构有什么有用呢? 首先可以快速二分查找。还可以中序遍历得到升序序列,等等。。。 基本操…

快排-荷兰国旗

在使用partition-exchange排序算法时,如快速排序算法,我们会遇到一些问题,比如重复元素太多,降低了效率,在每次递归中,左边部分是空的(没有元素比关键元素小),而右边部分只能一个一个递减移动。…

时间空间复杂度概述

找个时间写一写时间复杂度和一些问题分类,也普及一下这方面知识。 如何衡量一个算法好坏 很显然,最重要的两个指标:需要多久可以解决问题、解决问题耗费了多少资源 那我们首先说第一个问题,要多长时间来解决某个问题。那我们可…

二叉树遍历算法总结

文章目录前提要素深度优先搜索DFS经典遍历算法前序遍历递归版迭代版中序遍历递归版迭代版后序遍历递归版迭代版Morris遍历算法中序遍历前序遍历后序遍历广度优先搜索BFS按层遍历参考资料前提要素 本文代码用Java实现。 //二叉树节点结构 public static class TreeNode {publi…

线段树简单实现

首先,线段树是一棵满二叉树。(每个节点要么有两个孩子,要么是深度相同的叶子节点) 每个节点维护某个区间,根维护所有的。 如图,区间是二分父的区间。 当有n个元素,初始化需要o(n)时间&#xf…