我们开发了一个web服务。并需要我们的重要行动(即资金转移)不受意外调用的保护。在前端,我们要求用户确认这样的操作。好的。
但是,在开发人员出错的情况下,如何防止意外调用呢?
这是个好主意吗,这个操作需要开发人员的一些确认令牌才能进行?
发布于 2014-03-12 14:04:35
web服务不应该将UI决策强加在消费应用程序上(这比它必须做的更多)。用户操作的确认是UI决策。
另外,您并不是通过强制执行确认步骤来执行任何操作。如果消费应用程序开发人员愿意,他们可以简单地自动确认。不管是哪种方式,你所做的只是让消费变得更加困难。
如果您作为API提供程序希望对API使用者强制执行UI决策,这是相当公平的。但是,它应该通过一个条款和条件的结合,一个消费者死亡开关和一个事先的验证步骤(即。在我们看到应用程序之前,我们不会批准您的生产API访问)。
发布于 2014-03-12 17:26:48
如果您正在向第三方应用程序开发人员公开您的web服务,我可以想到两种情况,即可以在没有用户同意的情况下调用关键API (考虑到您的UI指南):
对于未指明的使用,我可以建议的是向第三方开发人员提供API键,这将是发布关键API调用所必需的。
这样,您就可以保护您的应用程序不被恶意使用API,以及跟踪哪个第三方发出了哪个调用,以便能够跟踪可疑行为。
至于代码中的bug,它们更棘手,因为没有编程的方法来防止它们。一个可能的解决方案可能是有一个两阶段的确认(即向用户发送一封邮件,其中有一个确认链接,他必须单击该链接才能完成事务),或者(可能更方便用户,但可能不可能,取决于服务)一封带有撤销事务链接的邮件,以防止事后发生意外事务。
发布于 2014-03-12 14:18:17
如果您真的觉得确认是必要的,您可以让您的关键服务需要一个时间戳令牌,并要求调用方在调用服务之前立即从您那里获得一个令牌。让令牌在几秒钟内过期(实际的TTL应在测量延迟后确定)。我同意pdr,虽然,这不是一个好的设计模式。
https://softwareengineering.stackexchange.com/questions/232117
复制相似问题