【SDL】微软SDL建设指南

【SDL】微软SDL建设指南

  • 1.建立安全标准、指标和治理
  • 2.要求使用经过验证的安全功能、语言和框架
  • 3.执行安全设计审查和威胁建模
  • 4.定义并使用密码学标准
  • 5.确保软件供应链安全
  • 6.确保工程环境安全
  • 7.执行安全测试
  • 8.确保运营平台安全
  • 9.实施安全监控和响应(态势管理或漏洞管理)
  • 10.提供安全培训

在这里插入图片描述

1.建立安全标准、指标和治理

1、确定所需标准和定义安全要求

SDL建设需要为产品线领导、产品所有者、开发人员、运营等角色提供明确的指导,帮助他们理解安全职责

组织必须明确一个最低的安全质量标准。早期定义这些安全标准有助于团队了解项目可能存在的安全风险,可以帮助团队在开发过程中更快、更有效地识别和修复安全缺陷。

可以参考以下信息:

  • NIST 安全软件 开发框架
  • 行业特定法规,例如,在存储、处理或传输支付账户数据时,应满足 PCI 数据安全标准 (PCI DSS)

2、定义硬性指标

SDL团队应该对安全漏洞严重性级别有明确的定义。它规定了哪些漏洞必须在指定的时间范围内修复。比如,“严重”或“重要”的漏洞应该在规定时间内被修复。该标准一旦确定,就不能放松,必须持续保持高标准不能懈怠

3、创建暂时放行机制

在实际工作中,由于业务优先级或资源限制,可能无法立即解决所有安全问题。因此,必须有一套正式的机制来暂时接受某些安全风险的情形。该机制(可以是提交一个安全备案工单)一定要包含以下的内容:

  • 分类:首先需要对风险进行分类,明确这个风险的性质以及可能的影响。
  • 证明:需要提供合理的理由来解释为什么这个例外情况是不可避免的,比如业务需求或资源不足。
  • 审批:漏洞备案情况必须经过发起者管理层的审批,确保高层管理者对接受的安全风险有充分的了解。

2.要求使用经过验证的安全功能、语言和框架

1、身份 - 确保用户使用强身份验证,并且仅具有适合其需求的权限级别(最小权限)

1️⃣ 安全凭证存储 (KeyVault/HSM) - 实施一种机制来清点、监控、维护和更新所有存储的机密。加密和存储应用程序机密,无需在代码或代码的配置文件中包含机密和其他敏感配置信息。切勿将密码或其他敏感数据存储在源代码或配置文件中,或存储在不受保护位置的纯文本文件(文档、电子表格)中。生产机密不应用于开发或测试。

2️⃣ 使用令牌相关标准标识库:例如使用 Microsoft 身份验证库 (MSAL) ,使开发人员能够从 Microsoft 标识平台获取安全令牌 ,对用户进行身份验证并访问受保护的 Web API。

3️⃣ 强制执行最小权限:系统的每个帐户类型和组件应仅具有执行所需操作所需的最低必要权限。

2、新兴事物:人工智能安全和保障(AI安全)

3、数据保护:保护应用程序中使用的内容——安全地实施和连接数据库、存储账户、非结构化文档等

4、日志记录完整 - 必须启用并保留安全日志记录,以协助任何事后调查

5、使用已批准的工具 - 定义并发布已批准工具及其相关安全检查的列表。工程师应努力使用最新版本的已批准工具(例如编译器版本)


3.执行安全设计审查和威胁建模

威胁建模和威胁模型的安全设计审查可以识别潜在的安全威胁,以便设计人员可以在开发过程的早期缓解这些威胁,从而实现设计安全的系统。在设计过程中添加安全需求内容比事后添加要便宜得多,风险也小得多。威胁建模是一种结构化方法,用于分析系统的安全设计,同时“像攻击者一样思考”。在新产品或新功能发布之前,可以缓解已识别的威胁。

在这里插入图片描述

对于威胁建模的学习,可以参考如下专栏:威胁建模专栏 - 免费


4.定义并使用密码学标准

使用正确的加密解决方案来保护数据在存储(静态)或传输(传输中)时免遭意外泄露或更改至关重要。要实现这一点,必须知道需要通过加密保护哪些数据、应使用哪些机制来加密这些数据以及如何管理加密密钥和证书。

1️⃣ 加密传输中和存储的数据:确保数据在存储和传输中均已加密。对于传输中的加密,尽量对所有互联网流量(最好是私有网络内的流量)使用强版本的 TLS。对于存储加密,虽然存在许多易于部署的加密解决方案来保护设备或磁盘上的数据免遭盗窃(离线攻击),但它们无法防止通过应用程序逻辑进行在线攻击,在这些情况下需要额外的解决方案来在将数据写入存储之前对其进行加密(传输中加密)。

2️⃣ 后量子密码学(PQC):建议在适用的情况下优先考虑对称加密,采用 后量子密码学(PQC) 进行非对称加密。

3️⃣ 加密敏捷性:在需要时更改新的加密机制、算法和库,例如在库中发现危及可靠算法的漏洞,或者加密算法可能随时被视为被破解的情况下。

4️⃣ 加密密钥和证书的管理和轮换:定义如何管理、保护和轮换加密密钥和证书也至关重要。密钥和证书的使用寿命有限,因此有必要定义机制来管理密钥和证书的生命周期,包括在之前的密钥和证书即将到期时创建新密钥和证书的机制,以及在发生安全事件(例如意外访问)时快速轮换的机制。任何可以访问加密密钥或私钥的人都可以访问加密数据,因此有必要控制谁(无论是个人还是服务)有访问权限并提供该访问的清晰审计日志。


5.确保软件供应链安全

如今,绝大多数软件项目都是使用第三方组件(商业和开源)构建的。在选择要使用的第三方组件时,重要的是要了解其中的安全漏洞可能对集成它们的大型系统的安全性造成的影响,并在使用前考虑进行彻底的分析。

如今,开发人员使用 OSS 的方式多种多样:git clone、wget、复制和粘贴源代码、将二进制文件签入存储库、直接从公共包管理器、将 OSS 重新打包为 .zip、curl、apt-get、git submodule 等。如果开发人员团队不遵循统一的 OSS 使用流程,那么在任何组织中保护 OSS 供应链几乎是不可能的。实施有效的安全 OSS 供应链策略需要在整个组织的各个开发人员团队中标准化 OSS 使用流程。

1️⃣ 建立安全的开源软件摄取流程:安全供应链消费框架(S2C2F)是一个安全保证和降低风险的流程,专注于确保开发人员如何使用开源软件。

2️⃣ 了解环境中的依赖关系:许多软件项目依赖于开源软件项目,其中许多项目依赖于其他开源项目。盘点依赖关系至关重要,以便在发现漏洞时能够更新这些依赖关系。

3️⃣ 制作软件物料清单 (SBOM) - SBOM 有助于提高软件透明度和完整性。SBOM 是一种机器可读的文档,其中列出了所有组件,包括用于创建产品的开源组件,有助于更好地盘点软件,从而帮助组织了解许可证和漏洞风险。SBOM 还包含包和文件校验和,以帮助验证哈希值,当其他方式无法提供签名时,这很有用。

4️⃣ 签署和证明工件——软件完整性的核心方面是签署和验证其组件。


6.确保工程环境安全

现在,攻击者已将攻击重点扩大到用户帐户、开发环境和构建流程,因此除了确保源代码和配置文件不包含安全错误或未被篡改之外,还必须防御这些系统。应通过零信任和最小特权访问策略来管理、操作和保护对源代码和工程系统的访问。源代码应存储在版本控制系统(如 Git)中,并通过条件访问策略和多因素身份验证来控制访问权限。工程系统应进行分段,由个人(其特权访问权限会定期接受审查)使用单独的授权身份从特定的平台或堡垒机进行管理。所有特权访问都应遵循即时和足够访问 (JIT/JEA) 原则提供,并应启用安全日志记录并将其提供给安全监控团队。

1️⃣ 采用零信任方法:零信任模型的核心要求对每个访问请求(用户、服务或设备)进行验证,就好像它来自不受信任的网络一样,无论请求来自何处或访问什么资源。

2️⃣ 禁止直接提交到生产分支:配置源代码控制存储库,防止开发者帐户直接提交到生产分支,并要求对所有拉取请求进行代码审查和批准。这可确保单个受感染/恶意开发者帐户无法对生产系统的代码进行任意更改。

3️⃣ 实施特权访问系统或堡垒机:使用特权访问系统或堡垒机有助于保护特权用户免受互联网攻击和威胁载体的侵害,方法是为敏感任务提供专用机器。

4️⃣ 提供安全的虚拟工作站:Microsoft Dev Box 让开发人员可以自助访问随时可编写代码的云工作站(称为开发箱)。开发箱可以配置特定于项目的工具、源代码和预构建二进制文件,因此开发人员可以立即开始工作 - 安全无虞。

5️⃣ 实施 GitHub Codespaces - Codespaces:过其内置功能和与 GitHub 平台的原生集成提供安全的开发环境。开发人员只需使用 IDE 或浏览器和 GitHub 帐户即可快速启动 Codespace,并在共享且安全的开发环境中工作。

6️⃣ 安全部署环境:例如 Azure 部署环境使开发团队能够使用基于项目的模板快速轻松地启动应用程序基础结构,这些模板可以建立一致性和最佳实践,同时最大限度地提高安全性。


7.执行安全测试

安全测试对于软件安全至关重要,通常是开发生命周期中集成的首批活动之一,旨在对安全性产生直接影响。安全测试包括自动(例如静态和动态安全测试)和手动(渗透测试)方法,每种方法都可以进一步分类,通常会使用多种方法。

1、SAST

静态分析安全测试 (SAST) 可以在编译之前分析源代码提供了一种高度可扩展的安全代码审查方法,并有助于确保遵循安全编码策略。它根据应用程序的逻辑和对编码标准的遵守情况来查找已知问题,而不是在应用程序运行时查找。SAST 通常集成到开发人员工作流程中,在提交代码之前识别易于检测的问题,并集成到构建自动化中,以便在每次构建或打包软件时识别漏洞。没有一刀切的解决方案,开发团队应该决定执行 SAST 的最佳频率,并且通常会部署多种策略——以平衡生产力和足够的安全覆盖范围。

资料:

1️⃣ CodeQL GitHub 业界领先的语义代码分析引擎。CodeQL 让您可以像查询数据一样查询代码,并编写查询来查找漏洞的所有变体,从而彻底消除漏洞。

2️⃣ 静态代码分析工具列表

优势:

  • 提供了最大的代码覆盖率,能够使整个代码库被扫描。
  • 不需要可执行的代码,它可以在软件开发生命周期(SDLC)的任何阶段使用。

劣势:

  • SAST最大的优势(白盒方法)也是它最大的劣势,因为它需要访问源代码。
  • 由于SAST不执行代码,所以它无法发现运行时的问题。
  • SAST会产生大量的假阳性/阴性。大型和复杂的项目将很容易产生成千上万的警告,需要手动审查并持续优化规则。

2、SCA

SCA与SAST类似,但是,它的主要目标是识别代码库中的所有开源组件、库和依赖关系,并将该清单映射到当前已知的漏洞列表中

3、DAST

实施动态分析安全测试 (DAST) ,源代码被编译、执行,然后在运行时进行扫描,以寻找安全漏洞。随机和预定的输入被传递给被测试的应用程序,如果应用程序的行为与预定的正确响应不同,或者程序崩溃,就会记录一个警告,这意味着应用程序中的一个错误已经被发现。

优势:

  • 由于应用程序的行为是被分析的,所以几乎没有误报。
  • DAST用于发现运行时问题,当需要用户交互时,是比较好的选择。
  • DAST不需要被测应用程序的源代码(纯黑盒方法测试)。

劣势:

  • DAST需要一个运行中的应用程序来测试,需要部署的人力(可以由QA负责搭建环境)。
  • 由于没有任何东西可以指导随机输入的生成,DAST不能提供良好的代码覆盖率,而且效率很低。
  • 很难将发现的错误映射回源码中去修复问题,需要人力追溯代码问题点。

4、IAST

IAST是两者的混合版本,结合了SAST和DAST的优点。

动态方法(DAST)常用于测试和过滤掉SAST产生的警告,以提高应用安全测试的准确性。测试指令可以像DAST一样确认利用成功,提高其性能,并像SAST一样对应用源码进行代码覆盖。

5、FAST

纯DAST解决方案和黑盒测试,一般来说,代码覆盖率较低,因为它们依靠随机的、基于模式的或蛮力的方法来生成输入和测试案例。

边缘模糊采用基于反馈的(覆盖指导)模糊技术,对被测试的软件进行仪器化测试,以识别漏洞和错误;它可以通过反向工程(如果应用程序是闭源的)来补充。在模糊过程中,随机输入 “发送到 “被测软件,同时监控其行为,直到触发崩溃。然后记录和分析导致崩溃的输入,以获得可用于利用(或修复)应用程序中的错误的信息。

当执行每个输入时,模糊器会得到关于所覆盖代码的反馈,使突变引擎能够测量输入质量。突变引擎的核心是用于优化代码覆盖率的遗传算法,作为一个健康函数。生成的输入导致新的代码路径(或基本块或边缘;取决于使用的模糊覆盖度量),最大限度地提高代码覆盖率,从而增加触发bug的概率,这些输入被优先考虑,并在下一批突变过程中使用。

优势:

  • FAST几乎不会产生误报,如果模糊器发现了什么,通常是确认的问题。
  • FAST会自动将代码覆盖率最大化,并且是高度自动化的。一旦模糊器启动并运行,它就可以搜索错误,而不需要进一步的人工交互。
  • 根据模糊器的类型,可能不需要源代码。

劣势:

  • FAST需要一个运行中的应用程序来测试,需要部署的人力(可以由QA负责搭建环境)。
  • FAST需要特殊的专业知识(如编写线束)和测试基础设施。

6、红/蓝队演习

一支由安全专家组成的专门“红队”模拟现实世界中对网络、平台和应用层的攻击,挑战云服务“蓝队”(一支专门的安全响应团队)检测、防范和恢复安全漏洞的能力。每次演习后,红队和蓝队都会进行全面披露,以确定漏洞、解决问题并显著改善漏洞响应。

7、应用程序渗透测试

渗透测试是由熟练的安全专业人员模拟黑客的行为对软件系统进行的安全分析。渗透测试的目的是发现由编码错误、系统配置故障或其他操作部署弱点导致的潜在漏洞,因此测试通常会发现最广泛的漏洞。渗透测试通常与自动和手动代码审查一起执行

8、执行持续安全测试

持续安全测试 (CST) 持续检查第三方库中的安全问题和不安全实现。CST 包括软件组成分析 (SCA) 检查和静态应用程序安全测试 (SAST)

9、运行漏洞赏金计划

开办SRC


8.确保运营平台安全

1️⃣ 强制实施多因素身份验证 - 人们常说,攻击者不会入侵,他们只会登录,因此有必要实施额外的控制措施来保护所有用户,尤其是管理员。多因素身份验证为登录添加了关键的第二层安全保护,以帮助保护对数据和应用程序的访问,同时仍提供简单高效的登录体验。

2️⃣ 保护管理帐户- 在 Microsoft,使用多层防御组合来保护对生产系统的管理访问,包括安全管理工作站 (SAW)、用于管理的 MFA 备用凭据以及基于角色的访问控制 (RBAC) 的即时特权提升 (JIT)。

3️⃣ 实施安全基线 - 所有运营环境都需要定义和执行安全基线。

4️⃣ 创建隔离层 - 隔离层是指应用安全控制的各个级别,以确保系统在流程、计算和网络方面保持分离和安全。

5️⃣ 使用机密计算 - 在云中处理敏感数据时将其隔离。

6️⃣ 减少攻击面 - 攻击面是您的组织容易受到网络威胁和攻击的所有地方。减少攻击面包括下线不需要使用的域名、ip、端口、服务等。

7️⃣ 执行平台渗透测试 - 对生产运行平台进行渗透测试,从物理数据中心到云平台。

8️⃣ 实施操作终端设备安全

9️⃣ 定期维护和自动修补周期 - 所有系统必须持续监控并更新最新的安全更新。

1️⃣0️⃣ 防范 DDoS 攻击 - 提供针对常见网络级攻击的实时缓解措施。分布式拒绝服务 (DDoS) 攻击是云应用程序面临的最大可用性和安全性问题之一,因为任何可通过互联网公开访问的端点都可能成为攻击目标。为了解决这个问题,至少必须持续监控流量,并为常见的网络级攻击提供实时缓解措施。然而,随着 DDoS 攻击变得越来越复杂和有针对性,可能还需要提供针对协议和应用程序层攻击的 DDoS 缓解措施。


9.实施安全监控和响应(态势管理或漏洞管理)

1️⃣ 主动检测和应对威胁 - 使用安全分析和威胁情报平台来实现攻击检测、威胁可见性、主动搜寻和威胁响应。

2️⃣ 建立标准的事件响应流程 - 制定事件响应计划对于帮助应对可能随时间出现的新威胁至关重要。


10.提供安全培训

安全是一场无限的游戏,其中威胁、技术和需要保护的业务资产总是在变化,而攻击者永远不会放弃,因此安全培训方法也应该是持续的和不断发展的。有效的培训可以补充和强化安全政策、SDL 实践、标准和软件安全要求

由于构建系统的工程师通常不是安全专家,因此他们必须接受威胁建模的技术和概念方面的培训,才能有效地构建设计安全的系统。这对于威胁建模过程在开发人员数量远远超过安全专业人员的组织中大规模发挥作用也至关重要。威胁建模必须被视为一项基本的工程技能,所有开发人员和工程师都必须至少具备基本技能。因此,开发和工程团队必须在入职培训和定期复习中接受培训,以胜任威胁建模。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/883124.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二十、Innodb底层原理与Mysql日志机制深入剖析

文章目录 一、MySQL的内部组件结构1、Server层1.1、连接器1.2、查询缓存1.3、分析器1.4、优化器1.5、执行器 2、存储引擎层 二、Innodb底层原理与Mysql日志机制1、redo log重做日志关键参数2、binlog二进制归档日志2.1、binlog日志文件恢复数据 3、undo log回滚日志4、错误日志…

群晖通过 Docker 安装 Firefox

1. 获取 firefox 镜像 在注册表搜索 jlesage/firefox,并且下载 2. 创建容器 运行映像 jlesage/firefox,开始创建容器 3. 配置容器 启用自动重新启动,重点配置存储空间和环境变量,其他默认。 创建文件夹,及子文件夹…

高效设备管理:中小企业的Spring Boot解决方案

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理中小企业设备管理系统的相关信息成为必然。…

Lucas带你手撕机器学习——SVM支持向量机

#1024程序员节|征文# 支持向量机(SVM)的详细讲解 什么是SVM? 支持向量机(Support Vector Machine,SVM)是一种用于分类和回归的监督学习算法。它的主要任务是从给定的数据中找到一个最佳的决策…

原来“有符号数变成无符号数,并不是-1变成1,-15变成15”!!

不怕大家伙笑话,我以前一直以为在C语言中,有符号变无符号仅仅就是去掉数字前面的符号就行,如今做了一道题,细细研究,才发现,原来不是! 如果你也感兴趣,那就学学今天这节吧~ 话不多说…

前端必知必会-JavaScript 简介

文章目录 JavaScript 简介JavaScript 可以更改 HTML 内容JavaScript 可以更改 HTML 属性值JavaScript 可以更改 HTML 样式 (CSS)JavaScript 可以隐藏 HTML 元素JavaScript 可以显示 HTML 元素 总结 JavaScript 简介 本页包含一些 JavaScript 功能的示例。 JavaScript 可以更改…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-20

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-20 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-20目录1. FLARE: Faithful Logic-Aided Reasoning and Exploration摘要研究背景问题与挑战如何解决创新点算法模型实验效果重要数…

多线程进阶——线程池的实现

什么是池化技术 池化技术是一种资源管理策略,它通过重复利用已存在的资源来减少资源的消耗,从而提高系统的性能和效率。在计算机编程中,池化技术通常用于管理线程、连接、数据库连接等资源。 我们会将可能使用的资源预先创建好,…

Ubuntu22.04虚拟机安装

一、安装介质下载: 在官网下载安装镜像,下载地址https://releases.ubuntu.com/22.04/ubuntu-22.04.5-live-server-amd64.iso 二、操作系统安装: step 1:进入ubuntu的安装界面,直接回车安装。 step 2:选择语言,直接回…

liunx线程互斥

临界资源和临界区 临界资源:多线程执行流共享的资源就叫临界资源。 临界区:每个线程中,访问临界区的代码,就叫临界区。 互斥:任何时候,互斥保证只有一个执行流进入临界区,访问临界资源&#…

NXP Smart Access Car-车用产品整合应用

在汽车技术不断进步的今天,智能化已成为汽车行业发展的主要趋势之一。本次研讨会将深入探讨NXP的Smart Access Car技术,说明如何通过NXP 产品设计提升汽车的安全性、便利性和使用者体验。研讨会将涵盖NXP MCU/NFC等方面的最新解决方案,并探讨…

Qt调用Yolov11导出的Onnx分类模型开发分类检测软件

软件视频地址:视频地址 代码开源地址 之前用Python配合YOLOV11开发一个了分类训练软件,软件只要准备好数据,然后导入就可以训练数据,训练完成后还可以验证,测试,但是要真正落地,还是有点欠缺。配合YOLOV1…

入门数据结构JAVADS——如何通过遍历顺序构建二叉树

目录 前言 构建二叉树的前提: 为什么需要两个不同类型的遍历: 前序遍历 中序遍历 我们的算法思路如下: 举例: 代码实现 后序遍历 中序遍历 结尾 前言 入门数据结构JAVA DS——二叉树的介绍 (构建,性质,基本操作等) (1)-CSDN博客 在上…

我毕业后的8年嵌入式工作

2015年毕业,2016年工作到现在已经过了8个年头,借着征文,做个简单的回顾与总结。 2015年从广州番禺职业技术学院毕业,学的是嵌入式技术与应用,我的下一届学弟学妹变物联网了,算是绝版专业了吧。出来后谨遵校…

07 设计模式-结构型模式-桥接模式

桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 这种模式涉及到一个作为桥接的接口,使得…

JAVA单列集合

List系列集合:添加的元素是 有序、可重复、有索引 Set系列集合:添加的元素是 无序、不重复、无索引 Collection Collection是单列集合的接口,它的功能是全部单列集合都可以继承使用的 public boolean add(E e) 把给定的对象添加到当前集合中 public void …

Spring MVC(下)

博主主页: 码农派大星. 数据结构专栏:Java数据结构 数据库专栏:MySQL数据库 JavaEE专栏:JavaEE 关注博主带你了解更多JavaEE知识 目录 1.响应 1.1 返回静态页面 1.2 返回数据ResponseBody 1.3 返回HTML代码⽚段 1.4 返回JSON 1.5 设置状态码 1.6 设置Header 2 . …

【文献及模型、制图分享】基于国际湿地城市视角的常德市湿地保护修复成效与归因分析及其政策启示

文献介绍 《湿地公约》提出的“国际湿地城市”认证是促进湿地保护修复的新举措。以国际湿地城市常德市为例,基于2000—2022年15 m空间分辨率湿地分类数据,监测常德市湿地保护修复逐年动态变化,定量分析湿地保护修复驱动因素的重要性和贡献率…

K8s中TSL证书如何续期

TSL是什么 K8s中的作用是什么? 在 Kubernetes(K8s)中,TSL 指的是 Transport Layer Security,也就是传输层安全协议。它是用来保护在网络上传输的数据的安全性和隐私性。 TSL 在 Kubernetes 中的作用包括:…

第1讲(ASP.NET Core 6 Web Api 开发入门):第一个Web Api项目

一、运行模板项目 二、验证模板项目的api 法1:直接在网页上进行验证api 法2:通过命令行验证api 复制下图的Curl语句,打开命令行进行粘贴。(对于windows系统,需要把换成",再去掉所有的/,最…