webservice如何保证只能在手机端调用?

by_封爱 2014-06-09 04:58:31
开发了一个webservice 里面有一个方法 比如

[webmethod]
public string Login(string name,string pwd)
{
//处理
return "1";
}

然后我发布到互联网上供手机端调用
比如
http://www.xxoo.com/mobileApi.asmx
当然你直接浏览也可以看到..

那么问题就来了.这个服务.正常我是给手机用的.

但是如果我偷偷知道了这个服务 我完全可以用winform添加引用或者恶意Post来导致接口的崩溃(假设里面大量的操作数据库)

所以.我如何保证我服务的安全性?有人会说"增加一个参数是XXOO的加密之后的string";


public string Login(string name,string pwd,string password)
{
if(password!="4846546464654DASD12545DAS45DSA4D")
{
return "0";
}
//处理
return "1";
}




但是现在有很多软件直接可以捕获apk的外部请求来看的.

所以人家一捕获很简单就能看到 某个按钮点击请求了http://www.xxoo.com/mobileApi.asmx?wsdl里面的Login方法

参数3个分别是admin admin 4846546464654DASD12545DAS45DSA4D

人家一样可以模拟进行post

so 还有什么办法呢?
...全文
490 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
祥子爱游戏 2014-06-14
  • 打赏
  • 举报
回复
最近在学webwebser,感觉不能限制客户端的类型,都会截取到你的请求,那就可以模拟了
showjim 2014-06-13
  • 打赏
  • 举报
回复
如果你能保证客户端不被反编译,你可以生成一个随机数(增加一个参数),然后结合这种4846546464654DASD12545DAS45DSA4D密码做个hash,服务器端验证一下就可以了。 关键的问题是,你要保证随机数的有效性是一次性的。
showjim 2014-06-13
  • 打赏
  • 举报
回复
引用 11 楼 diaodiaop 的回复:
安全策略层面太抽象了...
比如上面有人提到的IP限制、访问次数限制,或者用户权限限制、验证码测试。。。 如果可能,也许改善API的性能问题也比较重要。
by_封爱 2014-06-13
  • 打赏
  • 举报
回复
引用 9 楼 libinguest 的回复:
一个服务的公布,有些安全因素就在放在服务内部考虑。
所谓的内部考虑指的是什么? 也就是一个方法的调用 里面除了判断参数 还有什么其他方法么?
引用 10 楼 sbwwkmyd 的回复:
必须在安全策略层面限制,考虑客户端类型没有意义。
安全策略层面太抽象了...
changjiangzhibin 2014-06-13
  • 打赏
  • 举报
回复
限制客户端不太现实,服务端加强验证(方法、途径)
showjim 2014-06-11
  • 打赏
  • 举报
回复
必须在安全策略层面限制,考虑客户端类型没有意义。
风之影子 2014-06-11
  • 打赏
  • 举报
回复
引用 5 楼 diaodiaop 的回复:
[quote=引用 4 楼 liuchaolin 的回复:] 应该是没有可能的,你要知道手机模拟器,可以完全模拟手机上的应用
那岂不是别人知道我的服务地址了 就可以攻击 没有办法防御了??[/quote] 一个服务的公布,有些安全因素就在放在服务内部考虑。
md5e 2014-06-09
  • 打赏
  • 举报
回复
引用 7 楼 diaodiaop 的回复:
[quote=引用 6 楼 liuchaolin 的回复:] 建立IP白名单和黑名单,限制他同一时间段内访问次数
webservice能获取调用者的IP么?[/quote] 当然可以了,只要遵循传输协议,就有IP
by_封爱 2014-06-09
  • 打赏
  • 举报
回复
引用 6 楼 liuchaolin 的回复:
建立IP白名单和黑名单,限制他同一时间段内访问次数
webservice能获取调用者的IP么?
md5e 2014-06-09
  • 打赏
  • 举报
回复
引用 5 楼 diaodiaop 的回复:
[quote=引用 4 楼 liuchaolin 的回复:] 应该是没有可能的,你要知道手机模拟器,可以完全模拟手机上的应用
那岂不是别人知道我的服务地址了 就可以攻击 没有办法防御了??[/quote] 建立IP白名单和黑名单,限制他同一时间段内访问次数
by_封爱 2014-06-09
  • 打赏
  • 举报
回复
引用 4 楼 liuchaolin 的回复:
应该是没有可能的,你要知道手机模拟器,可以完全模拟手机上的应用
那岂不是别人知道我的服务地址了 就可以攻击 没有办法防御了??
md5e 2014-06-09
  • 打赏
  • 举报
回复
应该是没有可能的,你要知道手机模拟器,可以完全模拟手机上的应用
by_封爱 2014-06-09
  • 打赏
  • 举报
回复
引用 1 楼 Jack_77 的回复:
可以做一个秘钥验证 ,客户端加密,然后服务端获得加密的值,然后把秘钥加密一下看是否一致 ,这样安全性就会提高一些。
你这说的 不是跟我举得例子一样吗?
Jack_77 2014-06-09
  • 打赏
  • 举报
回复
不知道webservice有拦截器,有的话就可以在拦截器中过滤掉
Jack_77 2014-06-09
  • 打赏
  • 举报
回复
可以做一个秘钥验证 ,客户端加密,然后服务端获得加密的值,然后把秘钥加密一下看是否一致 ,这样安全性就会提高一些。

12,165

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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