ASP.NET Core Razor中Ajax传递用户名是否安全及安全方案查询
Ajax传递用户名的安全风险及解决方法
通过Ajax传递用户名完全不安全,存在已登录恶意用户篡改的风险。
恶意用户可以借助浏览器开发者工具(比如Chrome DevTools)拦截并修改Ajax请求中的username参数,将其替换为其他用户的用户名,这样后端会把myStuff错误保存到目标用户的账户下,直接导致数据越权篡改或访问问题。
正确的实现方式
不要从前端接收用户名,而是直接从后端的已登录用户身份信息中获取。ASP.NET Core提供了内置的身份验证机制,可以安全获取当前登录用户的标识:
修改后的处理程序代码示例:
public JsonResult OnPostSaveMyStuff(string myStuff) { // 从当前登录用户的身份信息中获取用户名 var username = User.Identity.Name; // 如果使用ASP.NET Core Identity框架,也可以获取唯一用户ID(更安全,避免用户名重复) // var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); // 执行保存逻辑... }
可搜索的学习内容
- ASP.NET Core 身份验证获取当前用户信息
- ASP.NET Core Razor Pages 防越权访问
- ASP.NET Core Claims 身份使用
- Razor Pages 后端获取登录用户标识
内容的提问来源于stack exchange,提问作者user20543568
相关产品推荐
相关产品推荐

