写在前面:合法学习边界
本文用于理解 HTTP 方法语义和 API 安全设计。请不要把危险操作测试用于真实系统。
一、为什么方法语义重要
HTTP 方法不只是“发送数据”的标签,它定义了请求的意图。
常见方法:
| |
二、安全方法和幂等性
1. 安全方法
GET 和 HEAD 通常应是安全的:
| |
如果 GET 可以改密码、删订单、发转账,那就是设计错误。
2. 幂等性
同一个请求重复执行,结果应当一致。
常见幂等方法:
| |
POST 通常不是幂等的,因为重复提交可能重复创建对象。
三、为什么安全人员关心
很多漏洞会利用“不该有状态变化的请求”去改变状态。
例如:
| |
这会影响:
| |
四、防御建议
| |
五、报告中的正确写法
示例:
| |
六、小结
方法语义不是装饰,而是协议约束。理解它,才能看懂 API 安全和日志分析。