Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
防止";传递散列“;Web API中的攻击?_Api_Security - Fatal编程技术网

防止";传递散列“;Web API中的攻击?

防止";传递散列“;Web API中的攻击?,api,security,Api,Security,我可能不会以最好的方式来做这件事,但作为一个学校项目,我所在的团队正在开发一个系统来处理入住和退房的手续,并处理由于房间内物品损坏而可能产生的任何费用。我们正在将项目数字化,并将其放在网络上,编写一个原生iPhone应用程序(作为任务的一部分,我宁愿让它成为一个通用的网络应用程序,但很好)。对于iPhone应用程序,我们正在整合一个web API,但我对我们保持API安全的努力有些怀疑 我们现在的过程是调用API以使用用户名和密码哈希进行登录,如果登录成功,将生成一个身份验证令牌,并将其与其他各

我可能不会以最好的方式来做这件事,但作为一个学校项目,我所在的团队正在开发一个系统来处理入住和退房的手续,并处理由于房间内物品损坏而可能产生的任何费用。我们正在将项目数字化,并将其放在网络上,编写一个原生iPhone应用程序(作为任务的一部分,我宁愿让它成为一个通用的网络应用程序,但很好)。对于iPhone应用程序,我们正在整合一个web API,但我对我们保持API安全的努力有些怀疑

我们现在的过程是调用API以使用用户名和密码哈希进行登录,如果登录成功,将生成一个身份验证令牌,并将其与其他各种数据一起以XML格式返回到iPhone。每个后续请求都需要此AuthToken。用户可以注销,或者如果20分钟内没有活动,AuthToken将在服务器端销毁。但是这使得API为“传递散列”攻击打开了大门,任何监听请求的人都可以从查询字符串中获取密码散列。任何拥有Wireshark和一个简单过滤器的人都可以在每个人都要搬进宿舍时等待有人登录,并且可以操纵任何东西

每个请求都容易受到传递哈希攻击。登录时,可以稍后重复用户名和密码以获得不同的AuthToken。不仅如此,任何已经生成的authToken都可以在实际用户不知道的情况下被使用和会话扩展

我曾想过将AuthToken绑定到IP地址,并拒绝使用备用IP地址的有效AuthToken的请求,这是可靠的,还是iPhone在手机网络而不是Wifi上会跳转IP地址?我想给任何恶意用户一个艰难的时期,但显然不是合法用户


该项目仍处于早期阶段,因此现在是对API进行如此重大更改的时候了。关于保护web API的任何提示都将非常棒。

您需要使用HTTPS


如果包括使用Wireshark的人,HTTP上的大多数内容都是易受影响的。HTTPS加密客户端和服务器之间的所有通信,并将防止大多数数据包嗅探攻击。

您需要使用HTTPS


如果包括使用Wireshark的人,HTTP上的大多数内容都是易受影响的。HTTPS加密客户端和服务器之间的所有通信,并将防止大多数数据包嗅探攻击。

您最好通过SSL发送所有信息。这将阻止任何人监听有线电视并嗅探密码哈希或身份验证令牌

您还应该考虑向发送哈希的客户端发送一个NoCE,以防止重放攻击。


在每个请求上更改身份验证令牌也非常容易。这可以防止重播和会话固定。只要确保令牌是好的随机数。

您最好通过SSL发送所有内容。这将阻止任何人监听有线电视并嗅探密码哈希或身份验证令牌

您还应该考虑向发送哈希的客户端发送一个NoCE,以防止重放攻击。


在每个请求上更改身份验证令牌也非常容易。这可以防止重播和会话固定。只需确保令牌是好的随机数。

不相信更改令牌会解决任何问题。如果Alice收到令牌W、X、Y(按顺序),然后停止使用服务(但不注销),Oscar所要做的就是将Y发送回Bob。Bob会认为这在交流过程中是正常的,并将Z发送回Oscar,而Oscar只是继续Alice的会话,好像什么都没发生。SSL是唯一真正的解决方案。@Stargazer712:更改令牌并不能解决所有问题,但它确实会阻止会话固定和重播。SSL和令牌更改的结合非常有效。当然,在任何情况下,您都必须使用SSL,否则您可能根本不需要进行身份验证。我完全忘记了HTTPS。我埋头于实现中,而不是着眼于全局。谢谢。另外,经过一点研究,我确切地了解了为什么HTTPS可以解决这个问题。我没有意识到HTTPS对URL(查询字符串和所有内容)进行了加密。我不相信更改令牌可以解决任何问题。如果Alice收到令牌W、X、Y(按顺序),然后停止使用服务(但不注销),Oscar所要做的就是将Y发送回Bob。Bob会认为这在交流过程中是正常的,并将Z发送回Oscar,而Oscar只是继续Alice的会话,好像什么都没发生。SSL是唯一真正的解决方案。@Stargazer712:更改令牌并不能解决所有问题,但它确实会阻止会话固定和重播。SSL和令牌更改的结合非常有效。当然,在任何情况下,您都必须使用SSL,否则您可能根本不需要进行身份验证。我完全忘记了HTTPS。我埋头于实现中,而不是着眼于全局。谢谢。另外,经过一点研究,我确切地了解了为什么HTTPS可以解决这个问题。我没有意识到HTTPS加密了URL(查询字符串和所有内容)。