概观 我正在为我的应用程序创build一个(REST)API。 初始/主要目的是供移动应用程序(iPhone,Android,Symbian等)使用。 我一直在寻找不同的机制来validation和授权基于networking的API(通过学习其他实现)。 我的头脑里缠绕着大部分的基本概念,但仍然在一些领域寻找指导。 我想做的最后一件事是重新发明轮子,但是我没有find符合我的标准的标准解决scheme(但是我的标准被误导了,所以也可以随意批评)。 另外,我希望API对于所有使用它的平台/应用程序都是一样的。 OAuth的 我会继续向oAuth抛出我的反对意见,因为我知道这可能是提供的第一个解决scheme。 对于移动应用程序(或更具体的非Web应用程序),将应用程序(转到Web浏览器)进行身份validation似乎是错误的。 此外,浏览器无法(我知道)将callback函数返回给应用程序(特别是跨平台)。 我知道有几个应用程序可以这样做,但是它只是感觉不对而且在应用程序用户体验(UX)方面有所突破。 要求 用户input用户名/密码到应用程序。 每个API调用都由调用应用程序标识。 开销保持在最低限度,对于开发者来说,authentication方面是直观的。 该机制对于最终用户(他们的login凭证不公开)以及开发者(他们的应用凭证不公开)是安全的。 如果可能的话,不要求https(绝不是硬性要求)。 我现在的执行思路 外部开发人员将请求一个API帐户。 他们将收到apikey和apisecret。 每个请求至less需要三个参数。 apikey – 在注册时给予开发者 时间戳 – 双倍作为给定apikey的每个消息的唯一标识符 散列 – 时间戳+ apisecret的散列 apikey需要识别发出请求的应用程序。 时间戳的作用类似于oauth_nonce,并避免/减轻重放攻击。 哈希确保请求实际上是从给定apikey的所有者发出的。 对于通过身份validation的请求(代表用户完成的),我仍然不确定要使用access_token路由还是用户名和密码哈希组合。 无论哪种方式,在某个时候,用户名/密码组合将是必需的。 所以当它的时候,会使用几条信息(apikey,apisecret,timestamp)和密码的散列。 我喜欢这方面的反馈意见。 仅供参考,他们将不得不先散列密码,因为我不存储密码在我的系统没有散列。 结论 仅供参考,这不是一个如何构build/构buildAPI的请求,而只是如何处理来自应用程序中的validation和授权。 随机思考/奖金问题 对于仅需要apikey作为请求一部分的API,如何防止除apikey所有者以外的人能够看到apikey(由于发送明文),并提出过多的请求来推动他们超出使用限制? 也许我只是在想这个,但是不应该有什么东西来validation一个请求被apikey所有者validation了吗? 在我的情况下,这是apisecret的目的,它不会被显示/传输没有被哈希。 说到哈希,md5 vs hmac-sha1呢? 当所有的数据都用足够长的数据(即apisecret)进行散列时,真的很重要吗? 我以前曾经考虑添加每个用户/行盐到我的用户密码哈希。 如果我这样做,那么应用程序如何能够在不知道所使用的盐的情况下创build一个匹配的哈希?
在办公室,我们正在编写一个应用程序,将根据我们提供的模式生成XML文件。 我们有一个.XSD文件中的模式。 是否有工具或库可用于自动化testing,以检查生成的XML是否与模式匹配? 我们宁愿使用适合商业用途的免费工具,尽pipe我们不会捆绑模式检查器,所以在开发过程中只需要开发人员使用。 我们的开发语言是C ++,如果有什么区别的话,尽pipe我不认为它应该是我们可以生成XML文件,然后通过在testing中调用单独的程序来进行validation。
我目前正在返回401 Unauthorized,当我在基于Django / Piston的REST API应用程序中遇到validation失败时。 看过HTTP状态代码registry我不相信这是一个validation失败的适当的代码,你们都推荐什么? 400错误的请求 401未经授权 403禁止 405方法不允许 406不可接受 412先决条件失败 417期望失败 422不可处理的实体 424失败的依赖 更新 :上面的“validation失败”是指应用程序级数据validation失败,即错误地指定了date时间,伪造的电子邮件地址等。
我已经重新安装了我的服务器,我收到这些消息: [user@hostname ~]$ ssh root@pong @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the RSA key sent by the […]
我看到有几个 。 哪些维护和易于使用? 他们有什么优点和缺点?
假设我们正在用AngularJS构build一个地址簿应用程序(人为的例子)。 我们有一个联系人表单,用于input电子邮件和电话号码,我们希望要求一个或另一个 ,但不是两个 :我们只希望emailinput是必需的,如果phoneinput是空的或无效的,反之亦然。 Angular有一个required指令,但在这种情况下,文档中不清楚如何使用它。 那么我们如何有条件地要求一个表单域呢? 写一个自定义指令?
如何在JavaScript中validation电子邮件地址?
我在网上看到了下面的正则expression式。 (?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[AZ])(?=.*[az]).*$ 它只validationstring: * contain at least (1) upper case letter * contain at least (1) lower case letter * contain at least (1) number or special character * contain at least (8) characters in length 我想知道如何转换这个正则expression式,以便它检查string * contain at least (2) upper case letter * contain at least (2) lower case letter * contain […]
我需要validation一个图片的url来检查url是否是这些扩展名的图像: – jpeg,jpg,gif,png。 例如: – 当我们validation这个urlhttp://www.example.com/asdf.jpg它应该给我们真正的价值和像这样的urlhttp://www.example.com/asdf.php应该返回false。 我们怎么能做到这一点的JavaScript,我也想检查url的内容types。 所以我们可以说,url是否是一个图像。
有没有办法让Facebook的蹩脚的开放图元标签来validation,如果我的文档types是<!DOCTYPE html> (HTML5)? 除了facebook的Open Graph元标记之外,我的文档完全validation。 我真的不想使用<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">因为这会造成一系列新的问题。 这里是一个有问题的validation错误的例子。 错误行11,列47:在此元素meta不允许的属性属性。 <meta property="og:type" content="website" /> 任何帮助,将不胜感激…我一直在寻找和closures了几天无济于事。