乐于分享
好东西不私藏

测试 | AI Coding:安全防护

测试 | AI Coding:安全防护
虽然也没啥要保密的,但是还是要注意下,让AI指导,看看如何安全保护吧。
以前做个网站,前后端经常混在一起,常采用Session的方法,保障安全。
现在测试的是前后端完全分离的架构,如何保障安全呢?问问AI
问:当前的.net core web api工程,发布后,任何人都可以通过链接访问相关的服务,非常不安全,有什么办法吗?
答:现状分析
当前项目存在以下安全问题:无认证机制
 - 登录接口虽然存在,但只返回用户信息,没有任何 Token 签发UserController 完全开放
 - 所有用户增删改查接口都没有任何保护,任何人可以直接调用密码明文存储
 - 数据库中密码是明文存储,没有加密主机限制已失效
 - 第 91-101 行的主机限制中间件检查的是 Host 头,很容易被伪造推荐方案:JWT 认证
最合适的方案是使用 JWT (JSON Web Token) 认证,这是目前 .NET Web API 最标准的安全
方案核心思路:
登录成功后签发 JWT Token
UserController 加上 [Authorize] 特性,只有携带有效 Token 的请求才能访问
密码使用哈希存储
我已经创建了一个子任务来自动完成 JWT 认证功能的实现,包括:添加 JWT NuGet 包
 - Microsoft.AspNetCore.Authentication.JwtBearer创建 JwtService
 - 负责生成和验证 Token改造 LoginController
 - 登录成功后签发 JWT Token保护 UserController
 - 添加 [Authorize] 特性配置 Program.cs
 - 注册认证服务和 JWT 中间件密码哈希存储
 - 不再明文存储密码更新 appsettings.json
 - 添加 JWT 配置
任务正在执行中,完成后我会通知你。
已实现的安全加固方案1. JWT 认证(核心安全措施)
原理:用户登录成功后,服务器签发一个加密的 Token(令牌),后续请求需要在 Header 中带上这个 Token,服务器验证通过后才允许访问接口。 
修改的文件:
2. 安全效果UserController 所有接口(增删改查)
 → 需要有效 Token,否则返回 401LoginController 不受限
 → 登录接口仍然开放,用于获取 TokenToken 有效期 8 小时
 → 可在 appsettings.json 中调整3. 前端使用方式
调用受保护的接口时,在请求头中添加:

Authorization: Bearer <token>

例如,前端登录后保存 Token,后续请求携带它:

// 登录获取 token

const loginRes = await fetch('/api/login', { method: 'POST', body: JSON.stringify({ userName, password }) });

const { token } = await loginRes.json();

// 后续请求携带 token

fetch('/api/user', {

  headers: { 'Authorization': `Bearer ${token}` }

});

3. 生产环境注意事项appsettings.json
 中的 SecretKey 请替换为更长的随机字符串(建议用环境变量覆盖)
建议启用 HTTPS 确保 Token 传输安全
让AI折腾几个小时,前后端,都搞定了,非常棒!
已关注
关注
重播 分享
相关:
测试 | GeoServer安装
测试 | 与VSCode Chat斗智斗勇:登录页面
测试 | 继续与AI工具战斗:地图显示
测试 | AI Code:天下没有免费的午餐
测试 | AI利器:高效Coding GIS搜索
测试 | AI Code:来个专题图瞧瞧
测试 | GeoServer Shp格式数据发布
测试 | AI Coding:报销Tokens否
测试 | AI说后端(C#)
测试 | AI Coding:后端服务验证用户登录
测试 | .net Core web api项目发布详情
测试 | AI Coding:前后端整合
测试 | AI Coding:发布0.1版本
总结 | 2026GIS研发团队暑期研发工作总结