1000分求教,WEBAPI的安全性问题

我真的是青蛙 2015-07-11 12:59:23
近期做了一个app,读取数据全是调用服务器的WEBAPI,现在又要做前端网站,用的是angularjs+bootstrap,前端网站是JS直接调用WEBAPI,因为接触WEB开发比较少,WEBAPI的安全性问题一直困扰着我,个人认为:如果APP被反编译,就会暴露所有的访问WEBAPI的方式和方法,更别说WEB网站上的JS访问WEBAPI了,查询数据的WEBAPI还好,如果是修改删除数据的WEBAPI,那么懂行的人就可以通过JS查出访问WEBAPI的方法,那岂不是他随便写一个程序,模拟POST数据到服务器修改数据?另外,我看了WEBAPI的摘要认证,感觉没多大用处啊,如果别人开发一个模拟程序,模拟取得token,还是照样可以访问WEBAPI啊。想了好久,不知道有什么更好的解决方法,可以控制恶意的非法访问WEBAPI。请高手帮忙一下。

高分求教啊,希望能给出详细的解决方案。

晕死,怎么一个贴不给给1000分啊,最才只能给100.。。
...全文
769 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
我真的是青蛙 2015-07-13
  • 打赏
  • 举报
回复
大家所言甚是,感觉我还是多想了
ajianchina 2015-07-11
  • 打赏
  • 举报
回复
楼主无需纠结与担心,先把加密的事情放一边,更别扯什么反编译别人看代码,随他怎么看,客户端确实应该是透明的,你这样去理解:要增删改,都必须是注册用户,在登陆后取得权限才可以,本身就应该赋予这个权限,但他只能改自己的,这是对外的公开接口。如果是小范围特定用户使用的接口,这样的公开接口你在软件上动太多脑筋都是然并乱,解决这个问题现阶段需要软硬兼施。 我这有个客户就是的,一款APP要求不能仅仅凭口令登录,要求较高的安全性,是他们厂里特定的十来个人用的,我这边采用的方法就是没人配一直电子动态口令牌,登录APP的时候要按一下动态口令牌,用显示出来的编号进行登录,现在有些银行的登录也是采用这一方式,对于服务端,口令牌提供SDK的里有算法,每个口令只有5分钟,下次登陆再重复上述步骤,就是麻烦一点,用的时候要带在身上。
1987andy 2015-07-11
  • 打赏
  • 举报
回复
说实话这样的问题,你给再多的分都很难回答。 接口的暴露是很正常的,你不应该过分的在于是否有人回去反编译你的APP,是否你的接口调用方式等会被他人知晓,安全在于服务端的处理,基本的auth验证是必须的,在auth后是否还有二重三重或者其他自定义的混合型的安全验证都是需要根据你自己的服务端架构来实现的,所以这种问题很难回答,尤其是得到具体的解决方案。 只能依靠楼主自己多查阅些验证的方式然后根据自己的服务架构,定义一个安全的验证规则了
sp1234_maJia 2015-07-11
  • 打赏
  • 举报
回复
oauth是一种“第三方单点登录授权”机制,其实跟这个并没有特别直接的关系。你说”我不授权了,我交给QQ来授权“,这当然也是一种完全可行设计模式。但是就这个问题而言,我们就相当于是来讨论基于web应用能不能使用QQ授权问题了。 这种基于web的开放的api是可以用的。当然如果你想防专业用户,那么你只能相对地去考虑这个问题。最终比较安全就行了,没有永远绝对的安全。而如果(看上去)明明你的服务端api自己“不设防”(连每一次连接都随机变化的token都没有),反而来怪“这个世界太多流氓”,那就等于在引诱流氓光顾呢。
  • 打赏
  • 举报
回复
最近总有些人在 csdn 反复提出什么“模拟web登录”的问题,说不定又是哪个培养流氓编程者的培训班老师在课堂上用这种流氓课程来吸引学生注意力了。有些年轻人觉得学习很困难,花了上万块钱学费还不如只学1%的知识——照抄一个流氓程序然后会稍微改一下——这样更能一夜暴富。 实际上关于模拟的问题,我是很少谈,尤其是不能在正规论坛上来谈的。但是实际上只要真正了解过技术,特别是掌握了编写测试程序和进行调试器调试的技巧,那么自然就能够亲自发现许多的运行方式和模拟方式。但是一个人是不是流氓,主要看他的目的性如何,那些只学1%的编程知识就三天两头只盯着“如何模拟登录”的问题的人很容易成为流氓,喜欢暗中以挑事为了的人也有流氓潜质。因此这个世界上很多人都有可能做出流氓行径,特别是像那些花了许多冤枉钱去蓝翔技校学习计算机编程的中专生,因此开放一个api就会每天遭到几百个人的逻辑攻击。 但是还是那句话,回到新浪、腾讯、阿里等等公司的各种开放api,对于许多中小公司的api参考他们的来发自己的”不开放的api“就行了。不能假设用户接触不到这些api,除非根本不发布。
  • 打赏
  • 举报
回复
你可以看一下腾讯、阿里、新浪等等公开的api,你说他们工程师和架构师会比你笨吗?他们既然可以这样,连支付宝都可以有接口公开让“任何人去调用”,你还仅仅在“可以随时调用接口”这种层次上纠结吗?有些api甚至都可以是网上开源、到处宣传的,更别说打包到APP里有一些隐蔽性的那些api了! 这说明你整体的思路是没有更上时代的。
  • 打赏
  • 举报
回复
客户端(前端)应该以开源的思想来设计。如果说看了你的源代码就能轻易攻击你的服务器,那么是你们的服务设计有问题(为什么不需要注册就可以修改删除数据?)。
  • 打赏
  • 举报
回复
身份验证什么的所以是必须的,你可以查下相关知识oauth,hmac,还有那个打开网页获取随机cookie,然后请求需要传递該值做验证的那个叫啥的,mvc里面有的
md5e 2015-07-11
  • 打赏
  • 举报
回复
补充说明,他的验证是否在线是有些问题的,某些国产设备明明是在线的,但得到的结果却是离线状态,但足够实现是否为真实的客户端ID
md5e 2015-07-11
  • 打赏
  • 举报
回复
APP可以借助第三方插件的验证来实现,例如个推的API,查询用户状态的接口 http://docs.getui.com/pages/viewpage.action?pageId=1212888 1、首先从APP中读取客户端标识,CLIENTID 2、然后通过网站接口进行相关验证,成功验证会反回json字符串,在线或离线或无效客户端

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧