热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

无需OAuth就可以设计一个安全的REST(Web)API

为什么80%的码农都做不了架构师?OAuth非常复杂,但是考察Amazon的Web服务发现它们并没有使用OAuth,那么是如何保证R

为什么80%的码农都做不了架构师?>>>   hot3.png

OAuth非常复杂,但是考察Amazon的Web服务发现它们并没有使用OAuth,那么是如何保证REST安全性呢?

答案在:HMAC,说白了就是HASH,每个客户端第一次发出请求时,将自己的唯一HASH MAC 和请求包发给服务器,以后,服务器就依据这个HMAC来判断客户端的唯一性。

看似比较简单,却解决REST安全的大问题。

Designing a Secure REST (Web) API without OAuth

下面为网友的提问:

hi,您好
今天下午看到你的文章 并且看了那片英文文章和英文文章里面的一些参考资料
我这里有些疑问
我还不清楚你所说的唯一性是指什么?
客户端发送的HMAC是动态的是变的,不仅仅第一次发送服务端需要记录以后作为一个凭证。同样的是只要在有效的时间内请求相同的http都很得到服务器的相应,这一点只能通过时间范围来控制重复请求。
HMAC他也是一个hash算法,目前md5等是可以破解的HMAC不仅仅是由hash所决定的 他还是由私钥决定。HMAC = H( K XOR opad, H(K XOR ipad, text)) 。
在v1.0中使用的md5算法 md5(uri+key)的方式 在v2.0中改进了算法机制。
还有因为在1.0存在安全漏洞 就是 key=value 和 keyvalu=e是成立的 ,目前版本也做了改进。
非常希望能和你交流 学习,我只是一个初学者。wfwq2008#gmail.com 谢谢
并且我看了一下AWS的phpsdk的实现方式,下面是HMAC在PHP的中的实现

// client $hash = hash_hmac('ripemd160', $xml.$time.$clientId, 'secret');
Then say I am submitting the following array of data via POST.
Code:
Array
([xml] => 'Some XML Data Here'[expires] => 'Unix Timestamp?'[clientId] => '12345'[hash] = > 'b8e7ae12510bdfb1812e463a7f086122cf37e4f7'
)

//On the server side I would then do something along the lines of the following PHP Code:
$key = lookupSecret($_POST['clientId']);
$hash = hash_hmac('ripemd160', $_POST['xml'].$_POST['time'].$_POST['clientId'], $key); if($hash === $_POST['hash']){ // proceed } else { sendResponse(401,'Unauthorized');
}

Designing a Secure REST (Web) API without OAuth

http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/

RFC 2104 - HMAC: Keyed-Hashing for Message Authentication

http://www.faqs.org/rfcs/rfc2104.html

Making Secure Requests to Amazon Web Services

http://aws.amazon.com/articles/1928

AWS signature version 1 is insecure

http://www.daemonology.net/blog/2008-12.html


转:https://my.oschina.net/boltwu/blog/418716



推荐阅读
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • OWASP(安全防护、漏洞验证工具)开放式Web应用程序安全项目(OWASP,OpenWebApplicationSecurityProject)是一个组织 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 本文介绍了在Ubuntu 11.10 x64环境下安装Android开发环境的步骤,并提供了解决常见问题的方法。其中包括安装Eclipse的ADT插件、解决缺少GEF插件的问题以及解决无法找到'userdata.img'文件的问题。此外,还提供了相关插件和系统镜像的下载链接。 ... [详细]
  • 玩转直播系列之消息模块演进(3)
    一、背景即时消息(IM)系统是直播系统重要的组成部分,一个稳定的,有容错的,灵活的,支持高并发的消息模块是影响直播系统用户体验的重要因素。IM长连接服务在直播系统有发挥着举足轻重的 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
author-avatar
wayne251312
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有