-
概述Web应用的数据将会储存在云侧,本地不会缓存数据。在进行数据管理操作时,您将会直接操作云侧数据。Web SDK将会为您的应用与云数据库的通讯和通讯安全提供保障。此示例应用演示了如何快速的使用Cloud DB构建简单的图书管理服务。通过快速入门和示例应用,您将会了解到如下信息:如何使用Cloud DB进行应用开发。应用数据如何写入到Cloud DB。如何实现数据的查询。实时侦听数据的更改。体验端云数据同步等功能。开发准备使用Cloud DB构建应用服务,需要完成以下准备工作:您已经在开发者联盟官网注册帐号并通过实名认证,详细请参见帐号注册认证。您已经在AppGallery Connect控制台上创建项目和应用,详细请参见创建项目。示例应用使用了认证用户的相关权限,需要开通AppGallery Connect认证服务中“匿名帐号”服务,详细请参见认证服务。您已经获取到示例代码,请从示例代码获取。注意事项当对象类型中字段的默认值设置为中文字符或者其他特殊字符时,本地编辑器或IDE默认编码格式应设置为utf-8,否则会导致端云数据同步失败。支持的浏览器Cloud DB JavaScript SDK支持的浏览器:服务ChromeEdgeFirefox华为浏览器SafariUC浏览器QQ浏览器IE11Cloud DB√√√√√√√√说明由于IE11只支持ES5,需要通过如下步骤将ES6配置为兼容ES5,让JavaScript SDK支持IE11。执行如下命令,安装babel-polyfill到您的项目中。npm install --save-dev babel-polyfill在代码入口主文件中导入babel-polyfill组件。import 'babel-polyfill';打开工程的配置文件,例如vue2.x+vue-cli中的webpack.base.conf.js文件,修改entry字段值,假设main.js是代码入口主文件。entry:['babel-polyfill','./src/main.js']在package.json文件中查看是否包含babel-loader,如果无babel-loader,请执行如下命令安装babel-loader。npm install babel-loader在工程的配置文件中添加如下规则,例如vue2.x+vue-cli中的webpack.base.conf.js文件。{ test: /\.js$/, loader: 'babel-loader', include: [resolve('node_modules/@agconnect/database')] }启用服务使用Cloud DB服务前,您需要先启用服务。登录AppGallery Connect网站,选择“我的项目”。在项目列表页面中选择项目,单击项目下需要启用云数据库服务的应用。在导航树上选择“构建 > 云数据库”。单击“立即开通”,开通云数据库服务。 (可选)如您还未选择数据处理位置,需要您先设置数据处理位置,具体操作请参见设置数据处理位置。服务初始化成功后,即启用云数据库服务成功。新增和导出对象类型您需要基于AppGallery Connect控制台创建对象类型,请您遵循操作步骤创建示例中涉及的对象类型,并导出用于Web应用开发的json格式和js格式对象类型文件。不允许修改导出的json格式和js格式文件,否则会导致数据同步功能异常。登录AppGallery Connect网站,选择“我的项目”。在项目列表页面中选择项目,单击项目下需要创建对象类型的应用。在导航树上选择“构建 > 云数据库”。单击“新增”,进入创建对象类型页面。 输入对象类型名为“BookInfo”后,单击“下一步”。单击 ,新增如下字段后,单击“下一步”。表1 字段定义表字段名称类型主键非空加密默认值idInteger√√––bookNameString––––authorString––––priceDouble––––publisherString––––publishTimeDate––––shadowFlagBoolean–––true单击 ,设置索引名为“bookName”,索引字段为“bookName”后,单击“下一步”。按照如下要求设置各角色权限后,单击“下一步”。表2 权限配置表角色queryupsertdelete所有人√––认证用户√√√数据创建者√√√管理员√√√单击“确定”。创建完成后返回对象类型列表中,可以查看已创建的对象类型。单击“导出”。 导出“json格式”和“js格式”文件,导出的文件在后续步骤用于添加至本地开发环境。导出json格式文件选择“json格式”。单击“导出”。导出js格式文件选择“js格式”。选择js文件类型,选择“js”。单击“导出”。新增存储区您可基于AppGallery Connect控制台在云侧创建数据存储区,请您遵循操作步骤创建一个存储区名称为“QuickStartDemo”的存储区。登录AppGallery Connect网站,选择“我的项目”。在项目列表页面中选择项目,单击项目下需要创建存储区的应用。在导航树上选择“构建 > 云数据库”。选择“存储区”页签。单击“新增”,进入创建存储区页面。输入存储区名称为“QuickStartDemo”。单击“确定”。创建完成后返回存储区列表中,可以查看已创建的存储区。配置开发环境使用编译平台打开示例项目。集成AGC SDK,详细请参见集成AGC SDK。集成Cloud DB SDK。执行如下命令,安装Cloud DB JavaScript SDK云数据库服务模块到您的项目中。npm install --save @agconnect/database在您的项目中导入database组件。import "@agconnect/database";添加对象类型文件在开发应用时,可直接将AppGallery Connect控制台上导出的json格式和js格式文件添加至本地开发环境,并通过AGConnectCloudDB类中的createObjectType()方法实现对象类型的定义和创建。您在进行本地应用开发时,无需再次创建对象类型。将已在AppGallery Connect控制台上导出的全部json格式和js格式文件添加至本地开发环境,如已存在,请覆盖原文件,文件位置如下所示:json格式:quickstart-js-sdk/src/components/configjs格式:quickstart-js-sdk/src/components/model初始化Cloud DB,通过AGConnectCloudDB类中的createObjectType()方法实现对象类型的定义和创建,详细请参见初始化。初始化在添加对象类型文件后,您就可以使用云数据库进行应用开发。您开发应用时,需要先执行初始化操作,初始化AGConnectCloudDB、创建Cloud DB zone和对象类型。 通过initialize()初始化AGConnectCloudDB。AGConnectCloudDB.initialize(context);通过getInstance()方法获取AGConnectCloudDB实例,并使用createObjectType()创建对象类型。const schema = require('./BookInfo.json'); agcCloudDB = AGConnectCloudDB.getInstance(); agcCloudDB.createObjectType(schema);打开Cloud DB zone。const config = new CloudDBZoneConfig('QuickStartDemo'); cloudDBZone = await agcCloudDB.openCloudDBZone(config);写入数据在本节主要介绍如何在应用程序中进行数据写入操作,以便您了解如何使用Cloud DB SDK实现数据的写入。在应用界面中,增加了“添加”按钮,用于用户新增数据,并在代码中通过executeUpsert()实现数据的写入。async function executeUpsert (book) { try { const cloudDBZoneResult = await cloudDBZone.executeUpsert(book); console.log('upsert' + cloudDBZoneResult + 'record' ); } catch (e) { conso.log(e); } }查看数据获取数据变化用户在应用界面中新增的数据,将会被存储在云侧。在端侧注册数据变化侦听器,当云侧数据发生变化时,端侧能够感知数据变化。通过查询条件与subscribeSnapshot()方法组合使用,可以指定侦听对象,当侦听对象的数据发生变化时,端侧会收到数据变化通知,并生成新的快照,触发用户回调。async function subscribeSnapshot () { const query = CloudDBZoneQuery.where(BookInfo); query.equalTo('shadowFlag', true); try { const onSnapshotListener = { onSnapshot: (snapshot, e) => { if (e !== null && e !== undefined && e.code !== AGConnectCloudDBExceptionCode.Ok) { console.log('subscribeSnapshot error'); console.log(e); } return snapshot.getSnapshotObjects(); } }; const listenerHandler = await cloudDBZone.subscribeSnapshot(query, onSnapshotListener); console.log(listenerHandler); } catch (e) { console.log('subscribeSnapshot error'); console.log(e); return null; } } function subscribeBookList() { subscribeSnapshot().then(snapshot => { snapshot.getDeletedObjects(); const resultList = snapshot.getSnapshotObjects(); console.log(resultList); }) }数据查询和排序在应用界面中,增加了“查询”按钮和排序功能,通过executeQuery()实现异步方式查询数据。async function executeQuery() { try { const query = CloudDBZoneQuery.where(BookInfo); const snapshot = await cloudDBZone.executeQuery(query); const resultArray = snapshot.getSnapshotObjects(); console.log(resultArray); } catch(e) { console.log(e); } }通过查询与limit()方法组合,实现限制查询数据显示条数的功能;与orderByAsc()方法或者orderByDesc()方法组合来实现数据的排序功能。async function executeQueryWithOrder (object) { const query = CloudDBZoneQuery.where(BookInfo); if (object.name.length > 0) { query.equalTo('bookName', object.name); } if (parseFloat(object.minPrice) > 0) { query.greaterThanOrEqualTo('price', parseFloat(object.minPrice)); } if (parseFloat(object.maxPrice) > 0 && parseFloat(object.maxPrice) > parseFloat(object.minPrice)) { query.lessThanOrEqualTo('price', parseFloat(object.maxPrice)); } if (parseInt(object.bookCount) > 0) { query.limit(parseInt(object.bookCount)); } query.orderByAsc('id'); try { const snapshot = await cloudDBZone.executeQuery(query); console.log('resultArray'); console.log(snapshot.getSnapshotObjects()); return snapshot.getSnapshotObjects(); } catch (e) { console.log('query failed with reason'); console.log(e); } }应用编译运行到此,您已经了解了示例应用的开发流程。您可以在WebStorm编译器上执行npm run serve命令运行示例应用。
-
【问题来源】【必填】北京 【问题简要】【必填】CMS报数据库连接错误,且baseweb页面提示500错误【问题类别】【必填】 CMS【AICC解决方案版本】【必填】 【oracle 19c数据库】 【AICC 8.15.0】 【UAP UAP9600 V100R005C00SPC021】 【CTI ICD V300R008C23】 【期望解决时间】【选填】【问题现象描述】【必填】 CMS报数据库连接错误,且web界面页面提示500错误,CMS到数据库网络正常,使用oracle用户plsql命令可以登录aicc_cms和aicc_sum正常,已经安装了nslb,但是使用nslb的地址和端口后无法打开网页,单独用baseweb的地址和端口可以打开web界面但是提示500错误; 【日志或错误截图】【可选】
-
很荣幸我们团队参加了这次的鲲鹏众智项目并与华为团队合作研发了A-ops前端页面系统。A-ops系统为OpenEuler平台上的计算机主机管理、问题排查、漏洞修复等工作提供了丰富的功能服务。而我们的项目则是为其装点了一个美观、易用的页面系统。前端系统在大家印象中感觉技术含量不高,但其实却是一个对工程化要求很高的系统。如何在有限的时间中快速搭建页面、联调测试、部署交付,如何平稳推进已上线的系统的后续版本迭代,代码版本管理,这些都对平常习惯于开发试验性系统的我们提出了很高的要求。在与华为研发团队的合作中,他们专业、高效的的工作方式也是给了我们很深的印象。OpenEuler系统对于浏览器的兼容性很好,主流浏览器基本都可以在上面稳定运行。同时运行在openEuler上的浏览器对于H5 api的相关支持也很好,在开发过程中我们使用的前端框架基本上没有碰到过比较麻烦的兼容性问题。可以认为未来在openEuler系统上进行前端应用的开发对于前端开发者来讲应该是会有很好的体验的。通过本次鲲鹏众智项目使团队中的学生们深入接触到了企业第一线的开发工作,了解到了真实开发场景下的工作要求和节奏,这对我们软件工程专业的学生们来说是一次受益良多的产学研结合实践体验。同时通过本次合作也让我们看到了华为OpenEuler系统的开放性与包容性,希望它的发展越来越好,为国产linux系统创出一片新天地。桂林电子科技大学-肖雁南
-
【问题来源】【必填】 【可选问题来源:北京】 【问题简要】【必填】 ccdis界面无法访问此网页【问题类别】【必填】 【可选问题分类:ccdis】【AICC解决方案版本】【必填】 【AICC可选择版本:AICC 8.15.0】 【UAP可选择版本:UAP9600 V100R005C00SPC021】 【CTI可选择版本:ICDV300R008C23】【期望解决时间】【选填】尽快【问题现象描述】【必填】 ccdis启动成功后,web界面无法访问此网页,与cti的was建链正常,昨天让修改的配置文件server.xml里面的defaultHost已经修改ccdis的服务地址了,重启服务后依然无法打开界面; 【日志或错误截图】【可选】 【附件】【可选】 附件是其中一台的ccdis的catalina.out的日志,麻烦帮忙看下,是否还需要其他的日志。
-
【操作步骤&问题现象】atlas500的网口1ip地址设置为192.168.137.115,可以使用xhell等工具连接,但是在浏览器中输入此ip无法正常打开web界面。
-
【功能模块】ccdis组件AICC8.15.0版本,cti版本:ICDV300R008C23【操作步骤&问题现象】1、安装ccdis组件,选择ccdis和ccdisweb模块安装2、浏览器输入https://172.16.144.8:8443/ccdisweb/loginIndex.html后无法访问此网页,与cti的was建链正常。【截图信息】【日志信息】(可选,上传日志内容或者附件)附件是其中一台的ccdis的tomcat启动日志
-
目前看到的断点续传方案都是要使用access-key、access-secret初始化obsclient来实现,但是我们不想暴露到前端,请问如何通过后端返回的预授权地址实现断点续传
-
1.1 介绍SPIDER是一种图像处理软件,用于电子显微镜的单粒子重建系统。SPIDER自1978年开始使用,包含超过210,000行Fortran代码和7400个文件。2020年7月的最新版本(可能是最终版本)包含对读/写MRC文件的支持。主要应用在单个粒子对象的平均及多元统计分析、3D重建、电子断层扫描和从体积中分割对象场景。该发行版主要由SPIDER和Web两个模块组成,包含所有相关的源代码(大部分是在GPLv2许可下发布的)以及一些预编译的可执行文件。SPIDER模块用于不需要图形交互或可视化的计算;Web模块用于涉及与数据进行图形交互的操作,例如图像文件的显示。它是一个使用 Motif/X-Window系统或 Java (JWeb) 的点击式界面。关于SPIDER的更多信息请访问SPIDER官网。语言:Fortran一句话描述:SPIDER是一种图像处理软件,用于电子显微镜的单粒子重建系统。开源协议:GPLv2。建议的版本建议使用的版本为“SPIDER 24.08”。1.2 环境要求硬件要求硬件要求如表27-1所示。表1-1 硬件要求项目说明CPU鲲鹏920处理器。 软件要求软件要求如表27-2所示。表1-2 软件要求项目版本下载地址SPIDER24.08https://github.com/spider-em/SPIDER/releases/download/24.08/spiderweb.24.08.tar.gzGNU4.8.5系统自带软件,无需下载。FFTW3.3.8http://www.fftw.org/fftw-3.3.8.tar.gz 操作系统要求操作系统要求如表27-3所示。表1-3 操作系统要求项目版本下载地址CentOS7.6https://www.centos.org/download/Kernel4.14.0-115包含在操作系统镜像中。 1.3 移植规划数据本章节给出SPIDER软件在移植过程中涉及到的相关软件安装规划路径的用途及详细说明。表1-4 移植规划数据序号软件安装规划路径用途说明1-基础环境搭建中的各安装包安装路径。参考《HPC解决方案 基础环境搭建指导书》中“安装规划数据”章节。2/path/to/SPIDERSPIDER的安装规划路径。这里的安装规划路径只是一个举例说明,建议部署在共享路径中。现网需要根据实际情况调整,后续章节凡是遇到安装路径的命令,都以现网实际规划的安装路径为准进行替换,不再单独说明。 1.4 配置编译环境前提条件使用SFTP工具将各安装包上传至服务器对应目录下。配置流程表1-5 配置流程序号配置项说明1基础环境搭建参考《HPC解决方案 基础环境搭建指导书》中“集群场景环境搭建”章节。2安装FFTW参考1.4.1 安装FFTW。 1.4.1 安装FFTW操作步骤步骤 1 使用PuTTY工具,以root用户登录服务器。步骤 2 执行以下命令解压FFTW安装包。tar -zxvf fftw-3.3.8.tar.gz步骤 3 执行以下命令进入解压后的目录。cd fftw-3.3.8步骤 4 执行以下命令进行编译配置。./configure --prefix=/path/to/FFTW--enable-shared --enable-static --enable-fma --enable-neon --enable-float步骤 5 执行以下命令进行编译安装。make -jmake install步骤 6 执行以下命令设置环境变量。export PATH=/path/to/FFTW/bin:$PATHexport LD_LIBRARY_PATH=/path/to/FFTW/lib:$LD_LIBRARY_PATHexport INCLUDE=/path/to/FFTW/include:$INCLUDE----结束1.5 获取源码操作步骤步骤 1 下载SPIDER安装包。下载地址:https://github.com/spider-em/SPIDER/releases/download/24.08/spiderweb.24.08.tar.gz。步骤 2 使用SFTP工具将SPIDER安装包上传至服务器“/path/to/SPIDER”目录。----结束1.6 编译和安装操作步骤步骤 1 使用PuTTY工具,以root用户登录服务器。步骤 2 执行以下命令进入SPIDER安装目录。cd /path/to/SPIDER步骤 3 执行以下命令解压安装包。tar -xvf spiderweb.24.08.tar.gz步骤 4 执行以下命令进入解压后web模块编译目录。cd web/src步骤 5 执行以下命令安装依赖包。yum install motif libXp libXt libX11 libSM libxcb libXau libXp-devel motif-devel执行echo $DISPLAY命令后,若无输出请重新打开shell窗口查看。步骤 6 执行以下命令开始编译web模块。make -f Makefile_linux_dir64步骤 7 执行以下命令进入解压后spider模块编译目录。cd ../../spider/src步骤 8 修改配置文件,详见表27-6。表1-6 修改配置文件文件名称操作步骤star2doc.f1. 执行以下命令打开“star2doc.f”文件。vi star2doc.f2. 执行以下命令设置行号。:set nu3. 按“i”进入编辑模式。修改第358行内容如下:358 READ(CTOKEN(1:NCHAR),*) IDLIST4. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。pw3sr.f1. 执行以下命令打开“pw3sr.f”文件。vi pw3sr.f2. 执行以下命令设置行号。:set nu3. 按“i”进入编辑模式。修改第37行、第38行内容如下:37 INTEGER :: NX,NY,NZ38 REAL :: Q(NX+2-MOD(NX,2),NY,NZ)4. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。pw2sr.f1. 执行以下命令打开“pw2sr.f”文件。vi pw2sr.f2. 执行以下命令设置行号。:set nu3. 按“i”进入编辑模式。修改第241行、第242行内容如下:241 INTEGER :: NX,NY242 REAL :: Q(NX+2-MOD(NX,2), NY)4. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。pr3d.f1. 执行以下命令打开“pr3d.f”文件。vi pr3d.f2. 执行以下命令设置行号。:set nu3. 按“i”进入编辑模式。修改第88行内容如下:88 WANTSQRTS = (FSCOP .eqv. .TRUE.)4. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。Makefile_linux.gfort1. 执行以下命令打开“Makefile_linux.gfort”文件。vi Makefile_linux.gfort2. 执行以下命令设置行号。:set nu3. 按“i”进入编辑模式。修改第39行内容如下:39 FFTWLIBDIR = path/to/fftw/lib4. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。 步骤 9 执行以下命令编译SPIDER模块。yum install gcc-gfortran.aarch64make -f Makefile_linux.gfort----结束1.7 运行和验证操作步骤步骤 1 使用PuTTY工具,以root用户登录服务器。步骤 2 执行以下命令进入web bin目录。cd /path/to/SPIDER/web/bin步骤 3 执行以下命令运行SPIDER的web模块。./web_linux_dir64_tmp出现以上界面表示web模块运行成功。 步骤 4 执行以下命令进入spider bin目录。cd /path/to/SPIDER/spider/bin步骤 5 执行以下命令运行SPIDER的spider模块。./spider_linux_gfort根据提示输入以下内容:.PROJECT/DATA EXTENSION: PRJ/DAT.OPERATION: ((3-0.26)/4)**2如返回结果0.46922499即运行正常。----结束
-
WAF(Web应用防火墙)通过对HTTP(S)请求进行检测,识别并阻断SQL注入、跨站脚本攻击、网页木马上传、命令/代码注入等攻击,所有请求流量经过WAF时,WAF会记录攻击和访问的日志,可实时决策分析、对设备进行运维管理以及业务趋势分析。前提条件购买并使用华为云WAF实例。限制条件仅云模式支持全量日志功能。支持全量日志功能的区域为:华北-北京一、华北-北京四、华东-上海一、华东-上海二、中国-香港、亚太-曼谷、亚太-莫斯科、华北-乌兰察布一 、华南-广州。设置步骤在WAF添加防护网站。登录管理控制台。在控制台左上角单击,选择区域和项目。在系统首页左上角单击,选择“安全与合规 > Web应用防火墙 WAF”,进入Web应用防火墙管理控制台。根据添加防护域名添加需要防护的网站,使网站流量切入WAF。开启全量日志功能,将WAF日志记录到LTS,详细操作请参见开启全量日志。在Web应用防火墙管理控制台,单击“防护事件”,选择“全量日志”页签。开启全量日志,选择已创建的日志组与日志流。如未创建日志组与日志流,请先创建日志组和创建日志流。单击“确定”,全量日志配置成功。 图1 配置全量日志 在日志流详情页面,单击左侧导航栏“配置中心”,选择“结构化配置”,进入日志结构化配置页面,选择“JSON”提取方式,根据业务需求选择日志,配置相关参数,具体操作请参见日志结构化。图2 配置JSON格式日志在日志流详情页面,单击“可视化”页签,进行SQL查询与分析,如需要多样化呈现查询结果,请参考日志结构化进行配置。统计1周内攻击次数,具体SQL查询分析语句如下所示:select count(*) as attack_times图3 攻击次数查询结果统计1天不同攻击类型的分布,具体SQL查询分析语句如下所示:select attack,count(*) as times group by attack查询结构有五种呈现形式依上而下分别为表格、柱状图、折线图、饼图、数字,如下图为饼图结果。图4 不同攻击类型的分布查询结果
-
近二十年来,DNS重绑定(DNS rebinding)攻击一直是讨论的话题。尽管浏览器厂商做出了努力,但仍然无法找到一个能稳定抵御这些攻击的防御系统。据说这类问题八年前就已经被修复了。但是这类攻击通过新的攻击向量再次出现。 总的来说,可以肯定未来的黑客活动将通过多个现有攻击组合形成新的攻击向量。这些新攻击向量的一个很好的例子就是攻击加密货币钱包的DNS重绑定攻击。 在本文中,我们讨论了Princeton(普林斯顿大学)和UC Berkeley(加州大学伯克利分校)关于基于web的方式攻击物联网设备的研究,这些攻击会导致设备被黑客发现、攻击和接管。研究于2018年8月发表。 设备与黑客发现和攻击物联网设备的方法 研究人员的目标是测试15个物联网设备。这些设备中只有七台有本地HTTP服务器,所以研究的重点放在它们上,它们包括:Google Chromecast、Google Home、一台智能电视、一个智能开关和三个摄像头。 使用的攻击方法是: 欺骗受害人,诱导他们访问攻击者控制的网站。 在受害者的本地网络上发现物联网设备。 通过基于web的攻击控制设备。 攻击的持续时间 从技术上讲,这不是新的攻击向量。研究报告引用了之前的研究,发现攻击者使用这些攻击向量平均需要一分钟才能获得结果。奇怪的是,一项着名的研究结果 (What You Think You Know About the Web is Wrong)显示,55%的用户花在网站上的时间不超过15秒。看来大多数用户不会受到物联网漏洞的影响。 但是在普林斯顿大学和加州大学伯克利分校的研究中,研究人员明显缩短了攻击的持续时间。研究人员表示使用他们发现的方法,可以比之前的研究更快地发现和访问本地网络中的设备。但是Chrome除外,因为它缓存DNS请求,如果TTL低于某个阈值,则忽略TTL。需要注意的是,隔离区(DMZ,防火墙内的内部网络)中的设备通常被认为是安全的,因为用户假设外部是无法访问这些设备的。但是,通过这里描述的攻击,攻击者可以访问受害者内部网络中的浏览器。 发现HTTP端点 研究人员通过将这些设备连接到Raspberry Pi的无线接入点来分析这些设备。观察并分析了从设备发送和接收的数据包,以及与每个设备绑定的移动应用发送和接收的数据包。通过分析发现了35个GET请求端点和8个POST请求端点。这些端点用于识别发现阶段中的IP地址。 研究的阶段 研究人员通过两个不同的阶段进行研究,即发现阶段和接入阶段: 发现阶段的目标是在本地网络上找到浏览器上包含HTML5元素的物联网设备。 接入阶段的目标是使用DNS重绑定和已发现的IP地址访问HTTP端点。 1. 发现阶段:识别物联网设备 使用WebRTC获取本地IP地址。 通过81端口向IP范围内的所有IP地址发送请求。由于81端口通常不被占用,活动设备将立即响应一个TCP RST数据包。而对于IP范围内的非活动设备,请求数据包将超时。 每个活动IP地址都接收到最初阶段使用HTML5为35个GET端点收集的请求。根据返回的错误消息信息,攻击脚本将识别IP地址是否与七个设备中的任意一个匹配。 研究计划使用三种不同的操作系统(Windows 10、MacOS和Ubuntu)和四种不同的浏览器(Chrome、Firefox、Safari、MicrosoftEdge)。然而只有Chrome和Firefox这两个浏览器适合这项研究。因此不使用Safari和Edge浏览器,因为根据(基于Web的方式对本地物联网设备的发现和控制的攻击): 在Safari上,所有的FETCH请求都超时了,导致攻击脚本将所有IP地址识别为不活动。而在Edge浏览器上,脚本可以使用FETCH请求正确识别活动IP地址,但Edge没有公开详细的HTML5错误消息,所以攻击脚本无法识别Edge上的任何设备。 2. 接入阶段:控制物联网设备 受害者访问攻击者控制的域名(domain.tld),浏览器执行在攻击者站点上找到的恶意JavaScript代码。域名仍然解析为攻击者的服务器IP。 恶意脚本请求domain.tld上的另一个资源,该资源仅存在于攻击者服务器上。 如果受害者的本地DNS缓存仍然解析为攻击者的远程IP,则对/hello.php的请求将返回字符串“hello”,并重复步骤2。 但是如果受害者缓存中的domain.tld过期,则将向攻击者发送新的DNS查询。 最后将返回从发现阶段中获得的本地IP,而不是攻击者的远程IP,/hello.php不会使用字符串“hello”进行响应,而是使用不同的内容,如404错误,它告诉恶意脚本DNS重绑定攻击已经成功。 通过这次攻击,恶意脚本绕过了浏览器同源策略(Same-Origin Policy),并获得了对运行在设备上的Web应用的访问权限。现在攻击者已经可以在Google Chromecast、Google Home、智能电视和智能开关设备上执行重新启动或启动视频/音频文件。 如何防止针对物联网设备的DNS重绑定攻击 研究人员称,用户、浏览器厂商、物联网厂商和DNS提供商需要采取预防措施,以避免DNS重绑定攻击。以下是研究给出的一些措施: 用户可以在浏览器上禁用WebRTC,并防止泄露私有IP。攻击者将能够通过向私有IP范围内的所有*.1地址(路由器地址)发送请求来发现用户的私有IP。 攻击者假设所有物联网设备的IP范围与受害者的PC具有相同的IP范围。用户可以通过配置路由器的DHCP服务器,在另一个子网(如 /16)上分配IP地址。 用户可以安装dnsmasq,通过从DNS响应中删除RFC 1918地址来防止DNS重绑定攻击。用户还可以使用dnsmasq的OpenWRT路由器。 物联网厂商可以在发送到Web接口的请求中控制Host标头。如果没有符合RFC 1918的私有IP,则可以阻止访问。 DNS提供商可以使用像dnswall这样的机制从DNS响应中筛选私有IP。 浏览器厂商可以开发限制公网访问私有IP范围的扩展程序。以上就是小编为大家带来的基于Web攻击的方式发现并攻击物联网设备介绍,希望能对您有所帮助转载自https://www.jb51.net/hack/654580.html
-
官方提供的断点续传问题可以解决单文件的暂停继续与取消功能,但是如果多个文件同时上传时,这个断点续传就只能控制到其中一个文件,这是不是涉及到多线程的问题,如何全部暂停或者全部继续上传,求解
-
根据Atlas 200 HiLens Kit 用户指南,登录HiLens IES Web界面的操作步骤设置网关以后无法访问到界面,怎么解决?
-
查看对象页面布局报错报错了,是什么原因导致的呀
-
前端三要素是接触前端的必须要掌握的基础,无论前端技术如何更新,都逃不出这三要素。他们分别是Html、CSS、JavaScript。本期我们来一起看下这三要素。 HTML 什么是HTML HTML是现在世界通用的超文本标记语言,通过它,可以实现图片、链接、音乐以及程序等等多种元素。现如今,HTML已经是程序员必须掌握的一项基本功。 HTML发展史 HTML没有1.0,因为关于它的初版存在争议,1995年HTML 2.0面世,1997年由国际官方组织W3C推出了HTML 3.2以及HTML 4.0标准,后面W3C(万维网联盟)也渐渐变成Web技术领域的权威,经过漫长的演变,2014年,HTML 5标准最终面世。HTML 2.0——1995年11月,RFC 1866发布HTML 3.2——1997年1月14日,W3C发布推荐标准HTML 4.0——1997年12月18日,W3C发布推荐标准HTML 4.01——1999年12月24日,W3C发布推荐标准HTML 5——2014年10月28日,W3C发布推荐标准 HTML结构 HTML的结构一般包括<head>标签和<body>标签,<head>和<body>这2个标记符分别表示网页的头部和正文。头部中可包含页面的标题、关键词、描述说明等内容,它本身不作为内容来显示,但影响网页显示的效果。<body></body>当中是网页实际显示的内容,正文标记符又被称为实体标记。页面当中通常包含有很多指向其他相关页面或其他节点的指针,通过点击,可以很方便地获取新的网页,这是HTML获得广泛推广运用最重要的原因之一,而由这些相互之间存在关联的页面组成的有机集合便是网站。究竟HTML为什么会被普及?这就要归功于互联网的高速发展,对于编程语言的需求直线上升。而HTML5具有超集方式的简易性、运用广泛的可拓展性、灵活应变的平台适应性以及简单的通用性。凭借着这些特性,HTML越来越受到人们的喜爱。 HTML5编辑规范 文件拓展名默认使用htm或者html,便于操作系统或者程序辨认文件,而图片则基本上存为gif或jpg浏览器默认忽视回车符,不过为了方便阅览,人们还是会习惯地在写完一段代码后进行回车标记符号用尖括号括起来,带斜杠的元素表示该标记说明结束,大多数标记符必须成对使用,用以说明起始和结束必须使用半角而不是全角字符HTML注释<!--注释内容-->的内容不给予显示 CSS 什么是CSSCSS 是层叠样式表 ( Cascading Style Sheets ) 的简称。CSS 是一种标记语言,属于浏览器解释型语言,可以直接由浏览器执行,不需要编译。CSS 是用来表现HTML或XML的标记语言。CSS 是由W3C的CSS工作组发布推荐和维护的.CSS 是编程入门人员的必修课,运用CSS样式可以让页面变得美观。CSS语法由三部分构成:选择器、属性和值: selector {property: value} 使用CSS的优势 内容与表现分离,有了CSS,网页的内容(XHTML)与表现就可以分开了。使用CSS可以减少网页的代码量,增加网页的浏览速度。 如何使用CSS 有三种方法可以在站点网页上使用样式表:外联式Linking(也叫外部样式):将网页链接到外部样式表。嵌入式Embedding(也叫内页样式):在网页上创建嵌入的样式表。内联式Inline(也叫行内样式):应用内嵌样式到各个网页元素。其中,优先级:内联式 > 嵌入式 > 外联式 JavaScript 什么是JavaScript JavaScript 是世界上最流行的脚本语言。 JavaScript 是属于 web 的语言,它适用于 PC、笔记本电脑、平板电脑和移动电话。 JavaScript 被设计为向 HTML 页面增加交互性。 许多 HTML 开发者都不是程序员,但是 JavaScript 却拥有非常简单的语法。几乎每个人都有能力将小的 JavaScript 片段添加到网页中。javascript因为兼容于ECMA标准,因此也称为ECMAScript。JavaScript作为一种脚本语言,已经被广泛地应用于Web页面当中,通过嵌入HTML来实现各种酷炫的动态效果,为用户提供赏心悦目的浏览效果。除此之外,也可以用于控制cookies以及基于Node.js技术进行服务器端编程。javascript是甲骨文公司的注册商标,完整的JavaScript实现包含三个部分:ECMAScript,文档对象模型和浏览器对象模型。发展初期,JavaScript的标准并未确定,同期有Netscape的JavaScript,微软的JScript和CEnvi的ScriptEase三足鼎立。1997年,在ECMA(欧洲计算机制造商协会)的协调下,由Netscape、Sun、微软、Borland组成的工作组确定统一标准:ECMA-262。 智能云网 智能云网社区是华为专为开发者打造的“学习、开发、验证、交流”一站式支持与服务平台,该平台涵盖多领域知识。目前承载了云园区网络,云广域网络,数通网络开放可编程,超融合数据中心网络,数通网络设备开放社区共五个场景。为了响应广大开发者需求,还提供了开发者交流、API 体验中心、多媒体课件、SDK工具包、开发者工具以及远程实验室共六大工具,让开发者轻松开发。欢迎各位前来体验。>>戳我了解更多<<
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签