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

2017年度安全报告——IoT安全威胁

 Internet of Things —  Security近年来,物联网技术的普及和快速发展让越来越多设备智能化,在公共领域,智慧环境 ( 家庭,办公,工厂 ) 领域,个人和社会领域等方面都有深入

 

Internet of Things —  Security


近年来,物联网技术的普及和快速发展让越来越多设备智能化,在公共领域,智慧环境 ( 家庭,办公,工厂 ) 领域,个人和社会领域等方面都有深入应用,新的技术和设备引入也带来了新的安全和隐私风险。该报告将探讨2017 年整年关于 IoT(Internet of Things) 设备相关的安全问题。

通过对市面设备的分析和已爆发的 IoT 安全事件回顾,我们观察到以下问题。

安全漏洞

安全漏洞是一个必然存在的问题,但必要的安全开发规范和习惯会减少漏洞的产生。

不安全通信

很多现有成熟的安全功能设计是可以复用到 IoT 设备中的,但依旧存在以下不安全通信的问题。


  • 未经认证的通信

  • 未加密的通信

  • 验证授权问题

  •  缺乏必要的网络隔离


数据泄露

很多物联网设计方案依托于云端, 设备和云端处理通信,也会设备之间互相通信,均可能存在数据泄漏风险 ( 用户信息,隐私, keychain 等 )。

云端泄漏

云端服务面临传统云安全挑战, 但因为和物联网的融合, 一旦云端沦陷, 将影响接入的物联网安全。
设备之间泄漏

开发设计安全意识

由于开发设计阶段人员安全意识不足,导致设备原生就存在安全弱点,易被攻击。

硬编码问题

由于开发过程不规范,导致私钥,API KEY,链接服务端密码被硬编码到固件,导致信息泄露所带来的安全问题。

默认身份认证凭据 ( 密码,口令 )

许多 IoT 设备使用相同的默认密码, 且用户无法主动修改密码。

硬件安全

IoT 设备一定会涉及嵌入式设备硬件, 硬件本身安全性也应考虑其中, 如串口, 一旦缺乏必要的认证机制, 暴露给攻击者, 攻击者可以很容易查找到敏感信息, dump 固件, 从而导致上述任意一环安全问题。

由这些安全问题, 整个 IoT 生态也爆发了一系列安全事件曝光于眼前, 也有大量没有曝光, 依旧暗藏于互联网空间中。

IoT 设备的严重碎片化

由于 IoT 暂时属于新生事物, 各个厂商有不同的设备功能, 实现, 版本, 难免出现众多安全问题。

Nday 重复利用

同一厂商的不同产品由于实现类似功能时复用代码, 有可能已披露的漏洞在某一产品修复但依然可以攻击另一产品。

不安全的第三方

引用不安全的第三方库引发对自身产品的安全影响。

完整性和签名校验

对于 IoT 设备来说, 完整性校验和签名校验可以有效的对抗漏洞利用, 涉及到从 BootLoader 到 OTA 的各个阶段, 甚至可以到网络通信过程。


  • 易感染恶意代码

  • 易被篡改功能通信实现 IoT 设备本身的恶意行为

  • 获取敏感信息,隐私等


Mirai 及其变种

2016 年爆发的 Mirai 事件经过一年的沉淀, 依旧对互联网产生着影响, 尤其是作者公开源代码后, 各种 Mirai变种 ” 百花齐放 “, 不少变种比 Mirai 原本更具有攻击性。

IoT_reaper

IoT_reaper 脱胎于 Mirai, 但在诸多方面更是优于 Mirai, 放弃弱口令攻击模式, 转而直接对 IoT 设备进行漏洞利用。

Satori

Satori 同样源于 Mirai, 除了在利用漏洞方面青出于蓝胜于蓝外, Satori 还有自扫描模块, 更加方便蠕虫的传播。

Hajime

Hajime 和 Mirai 不 同 的 是, 这 是 一 个 低 调 的 P2P botnet, 产生后并没有在公众视野过于张扬, 只是藏于暗处闷声发财, 由于是一个 P2P botnet, 安全人员很难通过黑名单对Hajime sinkhole。

IoT 挖矿

随着匿名货币龙头 BTC 的暴涨, 整个匿名数字货币水涨船高, 其匿名, 安全, 无法追踪的特性, 给网络黑产滋生带来了春天, 从今年 5 月的 SambaCry 漏洞后, 我们观察到大量野外利用攻击 IoT 设备进行 CPU 算力货币挖掘 (XMR 门罗币 ),IoT 设备的数量优势以及漏洞修复推送不及时等原因让其成为挖矿黑产里的新贵。

DDoS

无论是 Mirai 还是变种或任意 IoT botnet, 其变现要么挖矿, 要么 DDoS。

 

IoT 安全方向讨论

IoT 设备所直面的安全和隐私风险挑战最终会在用户使用设备时完全体现, 由于 IoT 设备比传统的 PC 设备或服务器设备更加贴近用户态, 关联到的隐私数据或财产数据比传统设备更多, 这也使得攻击者青睐于这一新兴事物 ; 其次, IoT 设备通常不会提供清晰完整的控制部署文档,也不会告知再部署设备时有可能带来的风险, 这使得用户对设备完全处于黑箱状态, 当安全和隐私收到威胁时感知度不高。

用户心态

大多用户都是非技术人员或者对技术不感兴趣的群体, 这样的最终用户不具备评估隐私和安全的专业能力, 所以导致弱口令泛滥, 版本不升级等情况。

互联网接入

大量暴露在公网的 IoT 设备, 带来了恶意软件和漏洞利用的落地入口。

设备基数

IoT 设备由于大部分价格成本较低, 所以数量庞大, 大量的IoT 设备基数也就使得易被攻击的比例增多, 数量庞大的设备能带来的变现能力和攻击能力更是不能小觑, 2016 年的 Mirai 事件就是最好证明。

设备功能特性

很多 IoT 设备贴合用户隐私, 如摄像头, 麦克风, 门锁,医疗设备, 智能穿戴支付等, 和用户贴合越密切, 越容易泄露敏感信息, 偷听, 偷窥, 远程打开门锁, 盗刷支付等。

易攻击性

许多 IoT 设备都不遵循安全性的最佳实现, 这使得攻击 IoT设备门槛变低, 单带来的影响却变高。

 

IoT 威胁分析

这一部分我们会针对不同切入点从技术角度讨论 IoT 的安全性,并将通过回顾 2017 一整年事件作为表现方式。

IoT 不安全通信

在厂商与厂商的合作之间势必会相互开放接口或者通信密钥以及一系列相关资源,这就导致了,但凡有一家合作厂商的安全做的不够出色,这就导致了短板效应的出现而拉低了众多厂商的安全等级。A 厂商和 C 厂商的合作使得 A 厂商几乎只承担的了集成 SDK 的成本就获得了一项智能家居产品,而 C 厂商也仅仅是提供了 SDK就拓宽了自己的销售渠道,这样的合作模式肯定受到双方欢迎的,但是这之间的安全问题是值得关注的。


  • 通信的密钥

  • 身份 TOKEN

  • 完整的设备信息

  • 完整的控制请求

根据上述的问题,再结合一定的分析往往就能很容易的得出一份令人满意的漏洞。

认证绕过导致接管设备

智能硬件的人机交互很多由 APP 控制,如果 APP 存在安全问题,这就会导致许多隐患:


  • 通信模型设计不当

  • 验证认证流程存在绕过,或极不完善

  • 查询接口权限认证粗糙

  • 涉及服务器敏感信息泄露

逆向某智能家居 APK

通过简单的认证流程模拟,由一个手机号即可获取大量设备关键信息,甚至控制密码。

通过手机获取设备信息

再根据已掌握的信息,进行设备控制指令的生成也是十分简单进而完全控制设备。

完全控制设备

在远程控制解决方案上,互联网层面多由 XMPP 协议进行通信,但部分厂商在使用上仅仅着手于 XMPP 协议的及时性和开放性,对于一些必要的安全措施并没有进行良好的设计。某厂商该特意设计了一个控制服务器,来接受和记录设备的绑定以及设备状态查询的服务,该服务器没有任何权限设置,也没有token 校验,可以抓包后任意重放,从而获得任意设备 mac 所绑定的用户手机号,同时,还有以下安全问题 :


  • 在服务器上存储用户设备控制密码

  • 对设备控制权限变更⽆校验,任何人可以在任何情况下对设备进行重新绑定,解绑,添加信任用户等危险操作

  • 并在特殊的构造下,可以直接获取到任意设备的控制密码

在通信过程中消息内容采用固定格式:

wan_phone%015bee58-xxxx-xxxx-xxxx-31598127xxxx%password%open%relay

在 局 域 网 内 设 备 采 用 UDP 无 连 接 通 信, 通 过 向 设 备 发 送 连 续UDP 报获取设备信息,通过构造控制指令,变换 mac 地址即可批量完全控制设备。

小结

由于设备不安全通信 , 攻击者对现有用户会产生用户敏感信息泄露 和IoT 设备为攻击者大开方便之门的安全问 题 . 最终甚至危害到广大用户的人身以及财务安全。

已有的改进



  • 尽量避免了将设备直接暴露在公网中

  • 已有一些通信上的加密措施 , 不再是任何⼈都可以向设备发送消息

  • 避免 IoT 设备的固件开发下载


尚存或演进的问题



  • 以CS 模式通信 , 但是通信结构和验证过程过于简单或没有 ,导致⼀旦攻破便可危害所有在网设备

  • APP 的安全开发意识十分薄弱

  • 厂商合作之间的信任链单一 , 信任关系简单

  • 多模式设计下 , 短板效 应明显 , 在某一模式安全性的缺失则导致整套安全系统崩溃

  • 对用户信息 , 设备的存储和查询 , 存在致命的缺陷 , 对用户信息无任何保护手段 , 很容易获得设备用户的对应关系


早期 , 网络病毒、蠕虫入侵的对象只是计算机 , 随着物联网时代的到来 , 入侵的对象由电脑转向网络摄像头和 路由器 . 万物互联时代的恶意软件猖獗 , 导致 IoT 僵尸网络的疯狂滋生。

此处我们会讨论 2017 年几个极具代表 性的 IoT 恶意软件。


IoT 恶意软件威胁

2016 年爆发的 Mirai 事件经过一年的沉淀 , 依旧对互联网产生着影响 , 尤其是作者公开源代码后 , 各种 Mirai 变 种”百花齐放”,不少变种比 Mirai 原本更具有攻击性 .

IoT_reaper

以 2017 年 10 月 爆 发 的 IoT_reaper 为 例 , 该 僵 尸 网络 脱 胎 于mirai, 但是在诸多方面比 mirai 更进一步 , 特别是开始放 弃弱口令猜测 , 完全转向利用 IoT 设备漏洞收割。

IoT_reaper 相较于 mirai 仍有几个明显区分点:


  1. 恶意代码投入时不再使用弱口令猜测、而是使用 iot 设备漏洞,扫描发现效率大大提高;

  2. 恶意代码中集成了 LUA 执行环境,从⽽支持通过 lua 脚本编写复杂的攻击指令;

  3. 主动抑制了扫描速度,被安全研究者发现的风险大大降低。

其中最为可评说的是 IoT_reaper 完全放弃了 mirai 中利用弱口令猜测的方式,转为利用 IoT 设备的漏洞植入,当前样本中集成了了 9 个 IoT 设备漏洞。

IoT_reaper 利用漏洞情况

在 2017.10.13 至 2017.10.23 之间单台 C2 的感染情况如下:

Satori

2017 年 11 月 22 日 , 360 网 络 安 全 研 究 院 观 测 到 有 大 量 扫 描集 中 在 23 和 2323 端 口 , 并 通 过 admin/CentryL1nk admin/QwestM0dem 两组用户名密码进行爆破 , 其针对的是 ZyXEL 调
制解调器 , 之后该僵尸网络 C2 被 sinkhole。

2017 年 12 月 05 日 , Satori 的 新 版 本 开 始 在 端 口 37215 和52869 上迅速传播。

相较于 mirai, 区分如下:


  • bot 不再完全依赖以往的 loader/scanner 机制进行恶意代码的远程植入,而是自身有了扫描能力 ;

  • bot 中增加了两个新的漏洞利⽤,分别工作在端口 37215和 52869 上

从 12 月 05 日开始可以看到 263250 个不同的 IP 在扫描目标端口:

12 月 5 日目标端口扫描情况

此次 Satori 的新版本主要利用到的是 CVE-2014-8361(52869端口 ) 和一个华为路由器的 0day CVE-2017-17215(37215 端口 )。

Satori 在传播过程中 , 不仅会利用上述漏洞利用 , 而且会迫使受感染设备从原始下载 URL 处继续下载 Satori 自身的恶意代码。这样周而复始 , 使得恶意代码类似蠕虫式地传播。

Setbox

2017 年 8 月 , 国内观测到一系列 DDoS 攻击 , 通过溯源发现攻击来自于一批电视机顶盒 , 通过样本分析 , 依旧可以归为 mirai 家族的 Satori 变种 , 其 DDoS 攻击代码一致 , 代码结构基本没改变。
但该僵尸网络针对有线电视终端机顶盒进行 telnet 口令爆破 , 将mirai 的攻击面延展到机顶盒设备 , 这无疑增加了影响范围。

该僵尸网络攻击传播如图所示:

Satori 僵尸网络船舶原理

通过 360 网络安全研究院数据观测 , 两个 C2 请求态势如下:

185.130.xxx.xxx:7723

185.47.xx.xxx:8716

小结

由以上三个 IoT 恶意软件看出 , 在 Mirai 开源代码后 , 其变种层出不穷 , 且青出于蓝胜于蓝 , 主要表现为 :


  • 保留 Mirai 的基本框架特性

  • 利用漏洞 ( 甚至 0day) 收割未被弱口令命中的 IoT 设备

  • 自身添加了扫描能力

  • 集成 LUA 环境升级自身编码能力

  • 和安全研究人员对抗性加强


在物联网相关的安全问题越来越引发关注的背景下 , 对在互联网上暴露的 IoT 设备进行分析和梳理是非常有必要的 ,360CERT 自行研发的 QUAKE 网络测绘平台孕育而生 , 利用网络空间测绘技术 ,
发现存储相关的 IoT 设备 , 形成威胁情报。


IoT 设备网络测绘情况

IoT 设备网络测绘总览

由于不同厂商设备指纹凌乱特征区分不明显 , 搜索结果可能和实际情况有出入 , 实际暴露情况可能比以下数据更多。

从全球分布来看 , 设备暴露情况以路由器为主 , 超过了 3100 万。

路由器全球测绘情况

其次为是视频监控设备 , 超过 800 万设备暴露在公网。

监控设备全球测绘情况

其中打印机位列第三 , 超过 80 万打印机暴露于公网。

打印机全球测绘情况

路由器暴露情况

通过统计 , 我们发现一个有趣的情况 , 在路由器暴露全球分布上 ,中国独占鳌头总量超过 1000 万。

全球范围内 , 暴露数量最多的服务依次是 HTTP、FTP、UPnP和 TR-069; 国内范围内 , 83% 的路由器开放了 UPnP 服务。


  • HTTP 服务以 80, 8080, 8081 等常见端口为主

  • FTP 服务端口为 21, 不排除存在匿名访问的情况

  • TR-069 协议以 7567, 4567 端口为主

  • Telnet 以 23 和 2323 为主 , 很多可以直接访问到魔改前后的路由系统 , 也由此 Telnet 成为攻击者的主要目标

  • 从国内数据统计来看 , 超过 80% 的路由设备开放了 UPnP服务

视频监控设备暴露情况

视频监控设备一直在安防领域占据主导地位 , 但今年发生的一些黑天鹅事件已经对智能安防设备的安全性敲响了警钟。

海康威视和大华两大厂商作为监控设备龙头 , 市场占有量大 , 所以暴露在公网的设备也以这两大厂商为主。

海康达到 300 万左右的全球设备暴露量 , 大华达到 200 万左右的全球设备暴露量 , 剩下以 D-Link, Cross 等厂商设备为主。

( 该图表数据来自于绿盟 <物联网安全研究报告 >)

打印机设备情况

在本次统计中 , 令人意想不到的是打印机暴露占比不少 , 随着智能化办公的推进 , 移动设备打印需求增大 , 打印机逐渐朝着智能化发展 , 越来越多的功能也伴随而来更多的攻击面。

在全球设备暴露方面 , 惠普占量最多 , 达到 50 万左右 , 其次爱普生 ,富士施乐等大厂商也占比较高。

惠普打印机全球以美国暴露量最大 , 其次为韩国 , 加拿大。

在打印机寻求攻击面上 , 除了常规的 web 控制端 , 631 端口 ipp 访问弱口令一类认证问题 , 我们还发现了 9100 端口 PJL 服务安全问题。

通过PJL 命 令 , 可 以 使 支 持 Postscript 的 打 印 机 切 换 至Postscript 模式 , 直接执行 Postscript 代码进而控制整个打印机。

小结

虽然一个物联网设备暴露在互联网并不一定意味着这个设备存在问题 , 但能说明该设备存在被攻击甚至被利用的风险。

通过网络测绘 , 我们发现以下问题:


  • IoT 设备暴露公网量巨大 , 且很多存在安全风险

  • 路由器和智能安防设备占有量为主

  • 中国在全球设备暴露量中占比较大

  • 大量的 IoT 设备暴露给攻击者落地进一步攻击提供了便携

  • 越来越多的传统设备在向智能化靠近且已经占到全球设备暴露量前列

 

IoT 安全发展展望


合规性管理

IoT 正在驱动着一轮新的行业变革 , 但在不同行业 , 安全需求不统一 , 落地的安全方案也不全面成熟 , 在安全监管和应对措施上也没有明确思路。仅仅依靠某个组织 , 行业的安全推动是远远不够的 ,
需要更高层级的协调以及统一的合规性管理。

举例参考 2016 年由于 Mirai 引发的断网事件 , 美国次月即发布了《保护物联网策略准则 (1.0 版 )》, 今年 5 月还签署了总统令《加强联邦网络和关键基础设施的网络安全》, 均要求各私营企业、研
究机构、社会团体围绕减少僵尸网络威胁和维护物联网终端设备安全问题 , 提出法律、政策、标准、技术等方面的建议 。

加强政府的监管和立法,不仅有助于提高社会和国家对物联网安全的重 视程度,而且也能进一步推进物联网产业向着健康、安全的方向良性发展。

物联网安全标准建设

在任何技术的发展和演进过程中 , 标准都有着至关重要的作用 , 理论形成标准 , 标准指导产品和解决方案的完善。从现在的情况看来 , IoT 处于起步蓬勃发展的阶段 , 以指南和框架为主 , 能够指导产业落地 , 解决大块的安全痛点。

 

参考

http://blog.netlab.360.com/wa-a-new-mirai-variant-is-spreading-in-worm-style-on-port-37215-and-52869/

http://blog.netlab.360.com/iot-reaper-a-quick-summary-of-a-rapid-spreading-new-iot-botnet/

http://www.nsfocus.com.cn/upload/contents/2017/12/20171205171653_35944.pdf


推荐阅读
  • 【CTF 攻略】第三届 SSCTF 全国网络安全大赛—线上赛 Writeup
    【CTF 攻略】第三届 SSCTF 全国网络安全大赛—线上赛 Writeup ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • 本文探讨了容器技术在安全方面面临的挑战,并提出了相应的解决方案。多租户保护、用户访问控制、中毒的镜像、验证和加密、容器守护以及容器监控都是容器技术中需要关注的安全问题。通过在虚拟机中运行容器、限制特权升级、使用受信任的镜像库、进行验证和加密、限制容器守护进程的访问以及监控容器栈,可以提高容器技术的安全性。未来,随着容器技术的发展,还需解决诸如硬件支持、软件定义基础设施集成等挑战。 ... [详细]
author-avatar
措小爱2TU1984
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有