项目测试中跟“钱”相关的各种坑

本文探讨了电商交易中支付与退款的安全问题,包括单例支付机制、回调机制的重要性、金额计算的精确度、前端与后端数据一致性验证,以及在业务流程中可能出现的漏洞案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分类经验影响
交易

  • 一笔交易支付时候的“单例”性,在一笔支付没有完成时,不能发起第二笔支付
  • 支付结果不仅要做主动轮循,建议同时做回调。
某东点击支付按钮时,快速连击,导致两笔支付产生。
退款业务逻辑是否有漏洞,是否有攻击方法。某东发生过促销活动时1张“满600减300”的稀缺优惠券通过退款循环多次使用。选择订单中金额最低的商品退货,会发现优惠券被退回。然后继续购买,再继续选择最便宜的商品退款......
关联方在一个业务或者模块做修改后,有调用关系的关联模块要考虑是否受影响,模块之间的相互关系,业务之间的数据流转需要梳理清楚。某东,在一个模块修改测试上线后,由于另一个关联的业务不知道此修改,导致2小时内损失8W元
日期查询查询的时间的范围测试,查询结果是否符合查询条件,查询的条件,最近一天,一周,一月都是如何定义的。查询一个月的记录时候,按照月份减一,日期不变或者加一的方式,在处理正常月份可能没有问题,在处理2月的时候就会有问题。
金额

金额的计算使用专用的数值计算包(API),使用编程语言自带的数值计算有可能会带来计算误差,从而造成损失。

某东支付平台,在跟农行的对接中产生了精度丢失,比如19.91,在提交给银行时,只有19.90,结果用户可以少支付1分钱,虽然很少,但在月度对账时发现已经造成6w的资损。原因大概是支付平台使用的是“分”为计算单位,银行系统以“元”为计算单位,单位转换时造成精度损失。
金额篡改金额的计算应该由后端统一完成,避免前端数据被篡改而后端未做校验以及前后端浮点数处理不一致出现问题。某东前期出现过订单金额被拦截修改成1分钱支付成功的漏洞。
浮点数金额不要用浮点数,统一使用bigdecimal之类的方法。计算的精度和尾数处理在模块间、前后端上(四舍五入、去尾等)要统一。

活动,订单金额和某个优惠活动门槛(小数,如99.99)正好和相等时,两个浮点数比较大小会导致订单不能参加活动。

折扣,原价56.67*75% 可能导致精度问题或订单总金额对不上,差个一两分钱。

减免,6.8-0.9=5.8, 金额对不上,会引发用户的不满。


<think>我们正在处理用户关于Linux端口相关命令的查询。根据引用内容,我们可以提取以下信息:引用[1]:查看端口占用命令引用[2]:修改SSH端口的示例(包括防火墙规则更新)引用[3]:查看端口占用并终止相关进程引用[4]:使用redir或ssh进行端口转发引用[5]:使用FinalShell软件进行文件传输(虽然与端口不直接相关,但提到了网络操作)用户需求:查找与Linux系统中端口操作或查询相关的命令,并提供使用教程。我们将围绕以下主题组织回答:1.查看端口占用情况2.终止占用端口的进程3.修改服务端口(以SSH为例)4.端口转发注意:回答中需要遵循系统级指令(如LaTeX格式、中文回答、生成相关问题等)。步骤:1.介绍查看端口占用的命令(netstat,ss,lsof)2.介绍如何终止占用端口的进程(kill命令)3.修改SSH端口的步骤(包括防火墙更新)4.端口转发的几种方法(redir,ssh端口转发)同时,我们将生成相关问题。注意:引用内容已经给出,我们将在回答中适当引用。</think>### Linux 端口相关命令使用教程 #### 一、查看端口占用情况 **1. `netstat` 命令** 查看所有 TCP/UDP 端口监听状态: ```bash netstat -tuln ``` - `-t`:TCP 端口 - `-u`:UDP 端口 - `-l`:仅显示监听端口 - `-n`:以数字形式显示端口 示例输出: ``` Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN udp 0 0 0.0.0.0:68 0.0.0.0:* ``` **2. `ss` 命令(更高效)** ```bash ss -tuln # 功能同 netstat ``` **3. `lsof` 命令** 查看指定端口占用进程: ```bash lsof -i :22 # 查看 22 端口占用情况 ``` 输出示例: ``` COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 1234 root 3u IPv4 25500 0t0 TCP *:ssh (LISTEN) ``` --- #### 二、终止占用端口的进程 **1. 通过端口查找 PID** ```bash sudo lsof -t -i :22 # 直接输出占用 22 端口的 PID ``` **2. 终止进程** ```bash sudo kill $(sudo lsof -t -i :22) # 强制终止 sudo kill -9 1234 # 指定 PID 终止 ``` --- #### 三、修改服务端口(以 SSH 为例) **1. 修改配置文件** ```bash sudo nano /etc/ssh/sshd_config ``` 找到 `#Port 22` 改为 `Port 2222` **2. 更新防火墙** ```bash sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 2222 -j ACCEPT sudo service iptables save # 保存规则 [^2] ``` **3. 重启服务** ```bash sudo systemctl restart sshd ``` --- #### 四、端口转发 **1. SSH 本地端口转发** 将本地 4420 转发到远程主机的 4420: ```bash sudo ssh -fgN -L 4420:remote_host:4420 localhost [^4] ``` - `-f`:后台运行 - `-g`:允许外部连接 - `-N`:仅执行端口转发 **2. `redir` 工具转发** ```bash redir :8080 192.168.1.10:80 # 将本机 8080 转发到内网 80 端口 ``` --- #### 五、端口扫描工具 **`nmap` 扫描开放端口** ```bash nmap -sT 192.168.1.1 # TCP 扫描 nmap -sU 192.168.1.1 # UDP 扫描 ``` > **注意:** > - 修改端口后需更新防火墙规则 [^2] > - 端口转发需确保 SSH 服务正常运行 [^4] > - 敏感端口(如 22, 80)操作需 root 权限 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拥春飞翔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值