2010-05-17 108 views
2

我有一个iPhone应用程序访问数据的ASP.NET Web服务。由于我正在构建应用程序的ASP.NET端和iPhone部分,我们很快将在Appstore中发布它,我想知道我需要做什么安全检查。ASP.NET webservice API安全

程序的基本流程(不泄露这件事太多的信息)如下 -

。登录(输入用户名,通过应用程序)
。主要屏幕,其中数据从web服务加载并呈现
。并在用户几次更新后发回数据

我正在使用POST通过HTTPS将数据发送到Web服务。我正在对输入进行消毒,检查输入的长度,但就安全性 而言,这是我的知识的限制。任何其他技巧,非常感谢!

编辑:我应该补充一点,我们的服务需要单独订阅,它的iPhone组件不能单独使用。所以普通用户不会拥有登录凭证。而且应用程序本身也有医疗数据,所以我宁愿没有任何人尝试从我的登录页面进行攻击。

谢谢,
Teja。

+0

您是否在设备上存储用户名和密码,或者只是让用户每次输入? – Rudiger 2010-05-17 02:14:55

+0

现在,我正在存储用户名并让用户每次输入密码。 – 2010-05-17 03:20:21

回答

2

有很多东西需要考虑。您可以同时控制客户端和服务器端,因此您必须采取一系列缓解措施。看起来你正在采取正确的方法,但你需要把重点放在风险/威胁上,并将缓解措施映射到这些风险/威胁。

例子:

  1. 认证使用用户名和密码来完成。这里可能会出现什么问题?主要威胁似乎是窃听电报上的凭证,或设备丢失(或访问它)。这些会将证书暴露给攻击者。如果您使用SSL来加密有线流量,那么它很难在网络上嗅探这些流量。但是,如果您将证书存储在设备上,SSL在这里不会保护您。您可能需要考虑的是OAuth(委托身份验证)或存储具有某种失效状态的凭据的哈希版本。推荐使用OAuth路由,并避免用户在您的应用程序中输入和存储凭证。相反,设备存储与其用户名和密码无关的“密钥”。然后他们可以登录到Web应用程序并撤销应用程序。存储具有到期日期的散列凭证并不安全,但由于OAuth需要更改服务器和客户端,因此在短期内可能更容易实施。
  2. 像iPhone这样的设备可能会提供一定程度的加密和防范本地攻击,但您应该考虑加密由您的应用程序存储的数据。您还应该将存储的数据量保持在最低限度。这可能是一个挑战,但您需要管理与用户和管理层的权衡。

有一些resourcesout那里你可能想要阅读。 Android或其他移动平台的材料也可能有用。

确保ASP安全。NET Web服务

微软已经在这方面发布了一些guidance(和相关的WCF security),但重点倾向于Web服务方面。您需要考虑更全面的安全方法。由于该应用程序与其他应用程序一样是ASP.NET应用程序,因此您应该查看一般的ASP.NET安全资源,如Beginning ASP.NET SecurityP&P Security Guidelines: ASP.NET。您可能还想在StackOverflow上执行一些more searching

+0

谢谢,我已经加密了用户在iPhone中存储的任何内容,我会看看OAuth。 我现在关心的另一个问题是Web服务端的数据和数据库安全性。任何帮助都会很棒。 – 2010-05-17 16:40:51

+0

我用一些Web服务安全信息更新了我的帖子。 – 2010-05-17 17:25:14