webapi 安全考虑 实际项目中_webapi call another webapi - CSDN
精华内容
参与话题
  • API接口安全

    万次阅读 2017-08-08 14:20:41
    API接口安全 1 基本概念 API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或...

    API接口安全


    1      基本概念

    APIApplication Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

    简单的说,就是通过某一预先定义的渠道读/写数据的方式。

    例如:

    条形码查询:http://xxxx.com/

    接口:

    http://xxxx.com/barcode/barcode?barcode=6936292120079

    方式:GET

    请求参数:

    参数:barcode

    位置:urlParam

    必填:是

    说明:条形码(8-14位数字),正则:/^[0-9]{8,14}$/

    返回示例:

    {

            "name": "石药阿莫西林胶囊0.25g×50/",

            "price": "9",

    }

    API接口广泛应用于APP、客户端、网页、软件等,不仅适用于获取数据(读),也适用于更新数据、删除数据(写)以及其他操作等。

    API接口的数据传输方式不仅仅局限于HTTP协议,也可以使用TCPUDP协议等。

       宽泛的说,API接口就是一种传输(操作)数据的方式。

    互联网无非就是数据的传输,可以说互联网所有APP、客户端、网页,均应用了API接口这一技术。

     

    2      背景

    由于API被程序(而不是人)使用,所以他们经常缺少UI,并且还使用复杂的协议和复杂的数据结构,这些因素使安全测试变得困难。 API的广泛性和复杂性使得难以进行有效的自动化安全测试,这可能导致虚假的安全感。

    另基于云计算互联网应用正变得越来越普及,在这个过程中,有更多的站点将自身的资源开放给开发者来调用。对外提供的API调用使得站点之间的内容关联性更强,这些开放的平台也为用户、开发者和中小网站带来了更大的价值。

    目前API接口安全目前越来越被安全组织所重视。

    2.1      OWSPtop10

    A10—未受到充分保护的API

    现代应用程序通常涉及富客户端的应用程序和API,如:在浏览器和移动应用程序中的JavaScript,它们连接到某种API(如:SOAP/XMLREST/JSONRPCGWT等)。这些API通常是没有保护的并且包含大量漏洞。

    APIweb应用程序带来更大的攻击风险,对于攻击者而言,API是非常有指示性的工具,能够告诉你应用程序如何运行,它具有自我描述性,能够为应用程序提供路线图。

     

    2.2      CSACloud conputing top threats in 2016

    Threat #3: Insecure Interfaces and APIs

    “开放”是云计算时代的一个重要的业务变革方向。云计算服务商需要提供大量的网络接口和API(应用程序编程接口)来整合上下游、寻找业务伙伴,甚至直接提供业务。但是,开发过程中的安全测试、运行过程中的渗透测试,以及测试工具、测试方法等,在针对网络接口和API上都还不够成熟,这些通常工作于后台相对安全环境的功能被开放出来后,将会带来新的安全威胁。

    对于云计算来说,API接口的重要程度无须赘述,对于整个平台和服务来说,一个安全的API接口就显得尤为重要了,IT管理员们会利用API对云服务进行配置、管理、协调和监控。API对一般云服务的安全性和可用性来说极为重要。企业和第三方因而经常在这些接口的基础上进行开发,并提供附加服务。

    企业要明白使用、管理、协调和监控云服务会在安全方面带来什么影响。安全性差的API会让企业面临涉及机密性、完整性、可用性和问责性的安全问题。

     

    3      如何保护API接口安全

    保护API的关键在于确保您充分了解威胁模型以及防御方式:

    1)、平面隔离,确定接口所属平面,且平面已清晰隔离等。

    2)、安全传输,安全传输是否已默认启用,相关算法、套件以及证书管理符合要求等。

    3)、认证,默认账户公开,强口令策略,防暴力破解机制以及会话管理机制等

    4)、鉴权,确保所有接口都已鉴权,不存在横向和纵向越权问题,不存在直接对象引用问题等。

    5)、敏感数据和隐私保护,敏感数据均需要加密存储及传输,加密算法符合要求,文件权限控制得当。

    6)、web安全,如果是WebApi接口,需要考虑覆盖web安全相关内容,如文件上传下载、输入编码输出校验、参数服务端校验等

    7)、接口Fuzz,对于接口需要从传输层、应用层分别考虑协议的Fuzz,包括应用层API接口Fuzz

    8)、泛洪攻击,从传输层、应用层以及鉴权未鉴权消息角度分别考虑DOSDDOS攻击风险

    9)、安全日志,管理操作需要记录日志。

    10)、业务逻辑安全,除了基础的安全之外,还要考虑接口业务逻辑上的安全设计是否合理,是否可能被绕过;重点关注登陆、忘记密码、重置密码等高危操作。

    11)、WebServer配置安全,如果是web服务,需要考虑容器的安全配置,可使用工具扫描

    12)、源码安全,测试过程中结合接口源码,覆盖安全功能点,主要关注自研接口代码。

    详细参见如下:

          

    4      如何保护接口安全

    在实际产品中,对外提供的不一定是API接口,有时候直接是封装好的UI界面或者客户端,但从本质上看,依然可以认为这是“客户端+API接口”的组合,而且安全的重点还是在API接口上,在实际安全测试过程中也应该更多从API接口角度去考虑。常见接口如:

    1WebServiceSOAP/XML

    2RESTful

    3MML

    4ONVIF

    5)各标准协议端口,如SIPSSH

    此外,产品对外提供的接口(服务)一般都会以开放端口的方式呈现,在对一个产品安全评估时,需要覆盖产品所有对外开放的端口。

    从接口角度,建议对产品采取如下步骤评估:

    1、    获取产品端口矩阵

    2、    筛选端口矩阵中的对外提供服务的服务端端口

    3、    对每一个服务端端口进行“如何保护API接口安全”章节的评估,如HTTPS443)端口等

     

    另外,不同的接口协议都可能有他特有的协议安全,在针对每个接口测试时需要单独考虑。

        详细测试用例可参见产品线用例基线,可通过【API接口安全标签】进行筛选。

     

    5      附录:

    5.1      OWASPAPI接口安全的理解

    ESAPIOWASP组织的一个开源项目,网址:http://www.owasp.org/index.php/ESAPI 

    ESAPI是一个免费、开源的Web应用程序安全控制组件,可以帮助编程人员开发低风险应用程序。   

      ESAPI很适合一个新的开发项目的安全组件,各版本的ESAPI包含如下基本设计:

    具有一个安全接口集;

    对每一种安全控制有一种参考实现;

    对每一种安全控制可以有你自己的实现方法。

    很多著名的大公司开始将ESAPI作为自己保障Web应用程序安全的手段,ESAPIf提供的安全接口主要有以下方面:

    ESAPI:Enterprise Security API

     

    5.2      参考资料

    • OWASP REST Security Cheat Sheet

    • OWASP Web Service Security Cheat Sheet

    • Increasing Importance of APIs in Web Development

    • Tracking the Growth of the API Economy

    • The API Centric Future • The Growth of the API

    • What Do You Mean My Security Tools Don’t Work on APIs?!!

    • State of API Security

    展开全文
  • Google的API介绍

    万次阅读 2006-10-27 13:15:00
    关于Google的APIs,大家都可以在http://code.google.com/apis.html上看到,这里将它们介绍一下,为大家扫扫盲:)关于Google相关API的开发演示将在随后的blog推出,敬请关注!以下是Google现有的API: Google ...
      
    
    关于GoogleAPIs,大家都可以在http://code.google.com/apis.html上看到,这里将它们介绍一下,为大家扫扫盲:)
    关于Google相关API的开发演示将在随后的blog中推出,敬请关注!
    以下是Google现有的API
     
    Google Account提供了两类验证帐号的APIClientLogin API用于帮助桌面程序或手机应用程序完成验证,不过这种验证实际上是通过http form的方式来完成的。另一种API虽然仍旧是利用http方式,但AuthSub API出于帮助Web用户完成登录验证的考虑,提供了一种近似于二传手的功能。登录信息填写和验证都在Google服务器上完成,用户对是否在当前网站使用Google Account的信息进行授权。(显然,使用这类API,你使用的编程语言并没有限制)
     
    AdSense API 允许你将AdSense的登录功能和管理功能集成到你的blog或者主页中(当然,也可以被动的由网站管理员添加到你的blog上)。这套API提供了五种语言的实现:Java, Perl, Python, PHP .NET.
     
    AdWords API为广大投放广告的公司和第三方广告商提供了使用自己的程序管理AdWords的方式(对于需要维护成百上千个AdWords的机构来说,这难道不是福音么?)。AdWords API仅提供PHP  Java两种语言版本。
     
    AJAX搜索API 为你提供了一种更好的将Google搜索加入你的网页中的方式,使Google搜索看起来跟你的站内搜索一样。(显然,开发者了解Javascript就好了)
     
    Google Base data API允许用户通过编程手段完成对Google Base中数据的增删改查。(现在已经是Google Data APIs的子项目了)
     
    Blogger data API允许你通过编程,对你blog的内容进行完全控制。Google Data APIs的子项目)
     
    Google Calendar API提供了编程完全控制你的Calendar的方式。(Google Data APIs的子项目)
     
    Google data APIs提供JavaC#两种编程语言接口,允许程序直接访问Google的服务,整个过程基于Google Data APIs Protocol。使用本套API的相关项目包括:Blogger, Google Base and Google Calendar
     
    Google Desktop SDK为开发者将Google桌面集成到自己的应用程序中提供了方便。 Google为大家提供了基于Python 例子
     
    KML全称是Keyhole Markup Language,是一个基于XML语法和文件格式的文件,用来描述和保存地理信息如点、线、图片、折线,并在Google Earth客户端之中显示。通常开发人员利用KMLGoogle Earth上添加自己所需要的东西(教程和文档Keyhole论坛)。
     
    Google Gadgets API用于为Google 个性化主页添加新的模块,管理你的Google桌面和Google个人主页。
     
    Gmail为方便用户读取收件箱和访问相关内容,提供了Atom格式的种子。
     
    使用Google Checkout API,你可以很容易地将电子商务中的支付服务集成到你的网站中,帮助买家管理订单状态以及自己的信用卡信息。Google为大家提供了JavaPHPASP三种版本的客户端实现
     
    Google Web Toolkit (GWT)是一种Java开发框架,帮助你更快的开发Ajax应用。当你的应用发布时,GWT将会把你的Java代码转译成跨浏览器的JavaScriptHTML
     
    针对Google GroupsAtom种子,使用方式如下
     
    为你将Google Maps集成到你的应用中提供了方式。
     
    Google提供的新闻聚合功能,提供RSSAtom两种形式的种子。
     
    Google Related Links提供了Javascript的调用方式,帮助你为自己的网站生成相关内容的链接。
     
    属于Google Enterprise的一套API,包括搜索协议Feeds协议安全服务接口
     
    RSS种子的形式提供用户最近搜索的相关记录。
     
    Google Sitemaps是针对网站主,用于提高网站被收录状况的服务。Google提供了一个开源项目来帮助用户创建sitemaps文件,同时还提供一些其它的第三方Sitemap工具
     
    Google Talk使用XMPP作为通信协议(相关文档),因此开发者可以基于XMPP协议开发关于Google Talk的相关应用。要了解更多细节,请查看Libjingle开发指南。已有的开发语言示例包括python, PHP, Java and c#Jabber软件组织还提供了大量可用的库文件
     
    Google Toolbar API允许你创建自己所喜欢的按钮,控制Google Toolbar的展现形式。
     
    Google SOAP API服务的使用需要下载相关包,创建Google帐号,并加载license key,服务基于SOAP协议和WSDL标准。
     
     
    展开全文
  • API接口开发简述简单示例

    万次阅读 2018-01-27 11:07:43
    API(Application Programming Interface,应用程序接口)架构,已经成为目前互联网产品开发常见的软件架构模式,并且诞生很多专门API服务的公司,如:聚合数据(https://www.juhe.cn/)、百度APIStore(http://

    作为最流行的服务端语言PHP(PHP: Hypertext Preprocessor),在开发API方面,是很简单且极具优势的。API(Application Programming Interface,应用程序接口)架构,已经成为目前互联网产品开发中常见的软件架构模式,并且诞生很多专门API服务的公司,如:聚合数据(https://www.juhe.cn/)、百度APIStore(http://apistore.baidu.com/

     

    先了解下 API :
    1、API 比开发 WEB 更简洁,但可能逻辑更复杂,API 只返回结果,也就是只完成数据输出,不呈现页面,
    2、WEB 开发,更多的是 GET 和 POST 请求,API 还有 PUT、DELETE 请求
    3、和 WEB 开发一样,首先需要一些相关的参数,这些参数,都会由客户端传过来,也许是 GET 也许是 POST,这个需要开发团队相互之间约定好,或者制定统一规范
    4、有了参数,根据应用需求,完成数据处理,例如:获取用户信息、发朋友圈、发消息、一局游戏结束数据提交等等
    5、数据逻辑处理完之后,返回客户端所需要用到的相关数据,例如:用户信息数组、朋友圈列表、消息状态、游戏结果数据等等,那数据是怎么返给客户端呢?常见有XML、JSON,设置相应的header并把要返回的数据直接打印出来即可
    6、客户端获取到你返回的数据后,在客户端本地和用户进行交互

    所以我们大概知道,API 其实不存在Web领域的 MVC 架构模式,若要分层的,API 也只有 M 和 C 两层,当然,后端可能会有更加复杂的架构!

    通过下面一个HTTP协议的API实例来理解PHP怎么开发API:

    复制代码
    <?php
    /**
    * 比较标准的接口输出函数
    * @param string  $info 消息
    * @param integer $code 接口错误码,很关键的参数
    * @param array   $data 附加数据
    * $param string  $location 重定向
    * @return array
    */
    function var_json($info = '', $code = 10000, $data = array(), $location = '') {
        $out['code'] = $code ?: 0;
        $out['info'] = $info ?: ($out['code'] ? 'error' : 'success');
        $out['data'] = $data ?: array();
        $out['location'] = $location;
        header('Content-Type: application/json; charset=utf-8');
        echo json_encode($out, JSON_HEX_TAG);
        exit(0);
    }
    
    $a = empty($_GET['a']) ? '' : $_GET['a'];
    $qq = empty($_GET['qq']) ? 0 : intval($_GET['qq']);
    
    //假设这是数据源,如MySQL
    $data = array();
    $data[979136] = array('qq'=>979136, 'vip'=>5,'level'=>128, 'reg_time'=>1376523234, 'qb'=>300);
    $data[979137] = array('qq'=>979137, 'vip'=>8,'level'=>101, 'reg_time'=>1377123144, 'qb'=>300);
    
    preg_match('/^[a-zA-Z]+$/', $a) || var_json('非法调用');
    isset($data[$qq]) || var_json('用户不存在', 100001);
    
    switch ($a) {
        //获取用户基本信息
        case 'info': 
            //你的更多业务逻辑 ...
            var_json('success', 0, $data[$qq]);
            break;
        //获取动态消息
        case 'message':
            var_json('您正在调用动态消息接口', 0);
            break;
        //获取好友列表
        case 'friends':
            var_json('你正在调用好友列表接口', 0);
            break;
        default:
            var_json('非法调用');
    }
    复制代码

    接口输出示例,返回的是一串json:

    复制代码
    {
            "code": 0,
            "info": "success",
            "data": {
                    "qq": 979137,
                    "vip": 8,
                    "level": 101,
                    "reg_time": 1377123144,
                    "qb": 300
            },
            "location": ""
    }
    复制代码

    json具有很强的跨平台性,几乎每种语言都有解析json的函数,下面是一个PHP作为客户端调用的示例:

    复制代码
    <?php
    header('Content-type:text/html;charset=utf-8');
    $url = "http://demo.979137.com/api/test/user.php?a=info&qq=979137";
    $arg = array(
        'a'  => 'info',
        'qq' => '979137',
    );
    $query_string = http_build_query($arg);
    $ch = curl_init($url.'?'.$query_string);
    curl_setopt($ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1);
    curl_setopt($ch, CURLOPT_USERAGENT , 'QQ_Mobile_V5.5');
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT , 60 );
    curl_setopt($ch, CURLOPT_TIMEOUT , 60);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER , true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    $response = curl_exec($ch);
    $httpcode = curl_getinfo($ch , CURLINFO_HTTP_CODE);
    curl_close($ch);
    if ($response === false) {
        var_dump(curl_error($ch));
    } elseif ($httpcode != 200) {
        var_dump($httpcode, '接口请求失败');
    } else {
        $ret = json_decode($response, true);
        var_dump($ret);
    }
    复制代码

    页面输出结果:

    复制代码
    array(4) {
        ["code"]=>int(0)
        ["info"]=>string(7) "success"
        ["data"]=>
        array(5) {
            ["qq"]=>int(979137)
            ["vip"]=>int(8)
            ["level"]=>int(101)
            ["reg_time"]=>int(1377123144)
            ["qb"]=>int(300)
        }
        ["location"]=>string(0) ""
    }
    复制代码

    实际项目中,我们在开发 API 时应该注意的几个点(仅供参考)

    1、单文件实现多接口的形式有很多种,例如:if..elseif.. 或 switch 或 很多框架里用到的统一入口通过调用类函数的形式实现
    2、数据输出建议使用json,json具有很强的跨平台性,大多编程语言都支持json解析,json正在逐步取代xml,成为网络数据的通用格式
    3、为了保证接口安全,一定要加入鉴权体系
    4、对于线上的API,务必关闭所有错误显示,可以把错误写到日志里,PHP中,可以通过 error_reporting(0) 屏蔽所有错误
    这样做的目的,一方面是保护接口安全,防止输出不该打印的错误信息
    另一方面是保证输出的是正确的数据格式,如json,假如不是标准的json格式,客户端在解析时就会出错,由此影响客户端的正常运转
    PS:我们平时在使用手机APP时,手机会闪退,多半是这个原因,即接口调用异常
    5、开发 API 和 WEB 有一定的区别,如果是 WEB 的话,如果程序写的有问题,比如有个notice 或 warning 级别的错误,在 WEB 里可能不会有什么问题,也许就只是导致 WEB 的某个部分错位或乱码。但如果是 API,就会严重调用的客户端了,如果是手机APP,那闪推啥的,是必然的,如果同样也是Web调用,也可能会出现  Server Error 了
    6、一定要重点考虑稳定性和响应速度,因为我们在使用手机APP时,都不希望APP经常闪推、而且希望应用很流畅
    7、不要随便使用一些 PHP 开源框架,原因概括起来有两点:
        1)如6所述,客户端一般对 API 响应速度有极高要求,目前PHP领域的开源框架非常多,根据笔者的了解,目前比较流行的框架,普遍做的比较重,而且基本都是为WEB而生,因此,框架多了很多 API 用不到的东西,框架在加载和执行冗余文件时,实际是在消耗你的性能
        2)如4和5所述,框架对于WEB开发,是件很幸福的事,但对于 API 而言,你实在不敢想象它会给你出什么岔子,因为很多框架并没有全面的考虑到 API 场景


    展开全文
  • 使用Web Speech API实现语音文本互转

    万次阅读 热门讨论 2017-09-25 12:55:11
    本教程,我们将尝试使用Web Speech API,这是一个非常强大的浏览器接口,可以用来记录语音并将其转换为文本,同样的,也可以用来朗读字符串。 接下来进入正题,这个App应当具有以下几个功能: 通过语音录入或者...

    本教程中,我们将尝试使用Web Speech API,这是一个非常强大的浏览器接口,可以用来记录语音并将其转换为文本,同样的,也可以用来朗读字符串。

    接下来进入正题,这个App应当具有以下几个功能:

    • 通过语音录入或者键盘输入的方式保存笔记;
    • 将笔记保存到本地;
    • 显示历史笔记并可以通过语音朗读笔记;

    此App无需使用任何花哨的依赖,只需使用jQuery来进行简单的DOM操作,以及Shoelace实现简单的样式,并使用CDN直接将它们包含到文件中。

    完整项目地址:https://github.com/zhangrj/converting-from-speech-to-text-with-javascript

    JavaScript语音转文本

    语音转文本

    Web Speech API 实际上分为两个独立的接口,语音识别(识别语音并转换为文本)和语音合成(以电脑合成音阅读文本)。

    作为一个免费的浏览器功能,语音识别API的准确度高得令人惊讶。几乎能识别我所有的发音,还能知道哪些词汇组合在一起能形成有意义的短语(英文),并且可以指定一些特殊字符,比如句号,问好,换行符。

    首先我们需要检查用户是否有权限访问此API并提供合适的错误提示,到目前为止,只有Chrome和Firefox支持语音转文本API,其他浏览器的用户可能看到浏览器不支持该功能的提示。

    try {
      var SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
      var recognition = new SpeechRecognition();
    }
    catch(e) {
      console.error(e);
      $('.no-browser-support').show();
      $('.app').hide();
    }

    recognition变量将允许我们访问该API所有的方法和属性,可供设置的选项有很多,此处我们只需要设置recognition.continuous为true即可,这可以使用户在录入语音时能有更长的停顿时间,大约15秒。

    在使用语音识别之前,我们还需要设置一些事件处理程序,用来监听语音识别过程中的状态变化。

    recognition.onstart = function() { 
      instructions.text('语音识别功能激活!请对着麦克风讲话。');
    }
    
    recognition.onspeechend = function() {
      instructions.text('长时间未说话,已自动关闭录音。');
    }
    
    recognition.onerror = function(event) {
      if(event.error == 'no-speech') {
        instructions.text('未检测到语音,请再试一次。');  
      };
    }

    此外,还有一个非常关键的特殊事件onresult,每当用户连续快速说出一个或几个单词时,都会触发该事件,用来访问转换结果。

    我们将onresult处理程序捕获的内容保存到一个全局变量中并将其显示在文本区域。

    recognition.onresult = function(event) {
    
      // event 是一个SpeechRecognitionEvent 对象
      // 保存了所有历史捕获对象
      // 我们只取当前的内容
      var current = event.resultIndex;
    
      // 获取此前所说话的记录
      var transcript = event.results[current][0].transcript;
    
      // 将当前记录添加到笔记内容中
      noteContent += transcript;
      noteTextarea.val(noteContent);
    }

    上面的代码略微有些简化,在Android设备上,有一个非常奇怪的错误,会导致所有东西重复两次,目前官方还没有给出解决方案,我们给出如下的方案,目前来看,没有明显的问题。将该错误考虑在内,代码变为:

    var mobileRepeatBug = (current == 1 && transcript == event.results[0][0].transcript);
    
    if(!mobileRepeatBug) {
      noteContent += transcript;
      noteTextarea.val(noteContent);
    }

    完成以上设置,即可使用语音识别功能,调用recognition的start()方法:

    $('#start-record-btn').on('click'functione{
      recognition.start();
    });

    浏览器将会弹出提示框,请求允许获得麦克风权限。

    大多数需要获得用户许可的API在非安全主机上都无法使用,所以最好确保你的网站使用https。

    浏览器将会监听一段时间,将每个识别到的单词或短语转译为文本,如果按了停止按钮或者沉默几秒,监听将会自动停止:

    $('#pause-record-btn').on('click', function(e) {
      recognition.stop();
    });

    至此,语音转文本部分已经完成,下面我们继续实现文本转语音。

    文本转语音

    语音合成使用起来更简单,可通过 speechSynthesis 对象访问该API,并且有播放、暂停等等音频方法可供使用。甚至,还可以改变音高、语速、音调。

    我们的应用只需要使用speak()方法,调用一个参数,一个SpeechSynthesisUtterance类的实例。

    读取字符串的所有代码如下:

    function readOutLoud(message) {
      var speech = new SpeechSynthesisUtterance();
    
      //设置朗读内容和属性
      speech.text = message;
      speech.volume = 1;
      speech.rate = 1;
      speech.pitch = 1;
    
      window.speechSynthesis.speak(speech);
    }

    当此函数被调用时,机器音会读出指定的字符串。

    总结

    现在这个时代,语音助手比以往任何时候都受欢迎,这样一个API可以帮助我们快速构建可能理解并能讲人类语言的机器人。

    为你的应用添加语音控制是一种很好的功能增强,具有视觉障碍的用户也能在语音接口中获益。

    该语音合成和语音识别接口适用于多种语言,包括中文。但是有限的浏览器支持限制了它们在实际生产中的使用,如果你需要使用更可靠的语音识别功能,可以试试下面的几个第三方API:

    展开全文
  • 如何设计好的RESTful API安全

    万次阅读 2014-05-12 21:32:35
    导读:安全是恒久的话题,对于基于WSDL和SOAP的Web ...关键词:RESTful API API安全性  前面讲了好的RESTful API具有的一些特征,本文会继续探讨RESTful API的安全性问题。 InfoQ:安全是恒久的话题,对于基
  • API测试工具Top 10 你都用过吗?

    千次阅读 2019-06-11 13:05:46
    API测试(应用程序编程接口测试)是一种软件测试类型,它着重于确定所开发的API是否满足关于应用程序的功能、可靠性、性能和安全性的预期。 根据谷歌Trends,在过去几年里,对API/Web服务测试的兴趣一直在稳步增长。...
  • RESTful api接口规范

    万次阅读 多人点赞 2019-02-13 17:53:30
    整体规范建议采用RESTful 方式来实施。   协议 API与用户的通信协议,总是使用...如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下。 https://example.org/api/   api版本控制 应该将API的版...
  • FIDO2.0概述

    千次阅读 2017-12-06 18:44:33
    问题和目标今天的认证技术在互联网规模上有很多众所周知的缺点。用户的身份验证体验非常分散,令人焦虑。用户必须多次对不同实体进行身份验证,包括本地设备和...FIDO 2规范定义了一个强大的身份验证架构,并考虑到以
  • REST Web 服务介绍

    万次阅读 2013-07-21 17:53:04
    待补充
  • PHP:API 接口规范完整版本

    万次阅读 2016-08-02 15:23:08
    整体规范建议采用RESTful 方式来实施。 协议 API与用户的通信协议,总是使用HTTPs协议,...如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下。 https://example.org/api/ api版本控制 应该将
  • 前后端分离API设计指南

    万次阅读 多人点赞 2018-03-16 12:24:05
    原文首发:...在web元年,每个web开发工程师都是真正的全栈工程师。哪有什么前后不搭边的事儿!到MVC时代,术业开始专工了。有最流行的Spring,有了iBatis这样的数据持久层框架,即ORM,对象关系映射,...
  • Shiro————核心设计思想

    万次阅读 多人点赞 2019-09-14 12:01:43
    之前在工作有比较快速的学习过Shiro安全框架,但经过一年的荒废,已经不是很熟悉了,通过这个系列,深入研究和学习Shiro的一些知识,填补安全管理方面的知识漏洞。使我们在web 开发领域更具竞争力,不做只会CRUD的...
  • API接口规范完整版本

    万次阅读 2018-04-30 17:27:08
    整体规范建议采用RESTful 方式来实施。 协议API与用户的通信...如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下。https://example.org/apiapi版本控制应该将API的版本号放入URL。https://api.exam...
  • REST架构风格最初由Roy T. Fielding(HTTP/1.1协议专家组负责人)在其2000年的博士学位论文提出。...从其诞生之日开始,它就因其可扩展性和简单性受到越来越多的架构师和开发者们的青睐。... API(也称RE
  • 如何实现RESTful Web API的身份验证

    千次阅读 2016-07-28 11:21:02
    最近想拿一个小项目来试水RESTful Web API项目只有几个调用,比较简单,但同样需要身份验证,如果是传统的网站的话,那不用说,肯定是用户名+密码在登录页获得登录Token,并把登录Token记在Cookie和Session作为...
  • 14.app后端如何设计api

    万次阅读 2016-06-18 20:29:51
    app和后端的交互,一般都是通过后端提供的api实现。api的设计,估计很多刚进入app后端的小伙伴会一无头绪,不知道怎么入门。下面根据自己3年的app后端经验,总结出下几个api设计原则,给小伙伴参考。
  • 三种常见的API设计错误及解决方案

    千次阅读 2018-01-17 10:48:45
    API已经成为了我们生活很常见的一部分,那么在API设计过程有哪些容易犯的错误呢?作者在本文介绍了三种,也给出了相应的解决方案,不妨一起来看一下吧!以下为译文。 作为表单工具Typeform
  • Web开发:什么是前端、什么是后端

    千次阅读 2014-05-09 15:41:38
    从去年做空间开始,这一年来,一直在提前端和后端这样两个概念,同时,也在小组内... 在我们实际的开发过程,我们当前这样定位前端、后端开发人员。  1)前端开发人员:精通JS,能熟练应用JQuery,懂CSS,能熟练
  • API接口开发简述示例

    千次阅读 2017-04-02 23:02:48
    API(Application Programming Interface,应用程序接口)架构,已经成为目前互联网产品开发常见的软件架构模式,并且诞生很多专门API服务的公司,如:聚合数据(https://www.juhe.cn/)、百度APIStore(http://
  • 全功能Rest Web Service开源框架Rop作者陈雄华专访

    万次阅读 多人点赞 2012-08-29 11:24:35
    Rop(Rapid Open ... 它高于CXF、Aixs等一般的纯技术Web Service框架,提供了请求/响应序列化、数据检验、会话管理、安全管理等高级主题的东西。最值得一提的是其参考TOP,提供了一个可扩展的错误处理模型,使开发
1 2 3 4 5 ... 20
收藏数 45,768
精华内容 18,307
关键字:

webapi 安全考虑 实际项目中