前端安全:别让你的应用变成黑客的游乐场

前端安全:别让你的应用变成黑客的游乐场

毒舌时刻

这代码写得跟网红滤镜似的——仅供参考。

各位前端同行,咱们今天聊聊前端安全。别告诉我你还在写明文存储密码,那感觉就像把家门钥匙挂在门口——方便,但不安全。

为什么你需要前端安全

最近看到一个项目,登录表单直接把密码发送到服务器,没有任何加密。我就想问:你是在做应用还是在给黑客送大礼?

反面教材

// 反面教材:不安全的登录 // components/LoginForm.jsx export default function LoginForm() { const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const handleSubmit = async (e) => { e.preventDefault(); // 直接发送明文密码 const response = await fetch('/api/login', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ username, password }) // 明文密码 }); if (response.ok) { // 登录成功 } }; return ( <form onSubmit={handleSubmit}> <input type="text" value={username} onChange={(e) => setUsername(e.target.value)} placeholder="用户名" /> <input type="password" value={password} onChange={(e) => setPassword(e.target.value)} placeholder="密码" /> <button type="submit">登录</button> </form> ); } // 密码在网络传输中是明文 // 本地存储也是明文 

毒舌点评:这代码,密码明文传输,你是在写应用还是在做黑客培训?

前端安全的正确姿势

1. 密码加密

// 正确姿势:密码加密 // utils/auth.js import bcrypt from 'bcryptjs'; export async function hashPassword(password) { const salt = await bcrypt.genSalt(10); return await bcrypt.hash(password, salt); } export async function comparePassword(password, hashedPassword) { return await bcrypt.compare(password, hashedPassword); } // 服务端登录处理 // api/login.js export default async function handler(req, res) { const { username, password } = req.body; const user = await User.findOne({ username }); if (!user) { return res.status(401).json({ error: '用户不存在' }); } const isMatch = await comparePassword(password, user.password); if (!isMatch) { return res.status(401).json({ error: '密码错误' }); } // 生成 JWT token const token = generateToken(user.id); res.json({ token }); } 

2. XSS 防护

// 正确姿势:防止 XSS // components/Comment.jsx import DOMPurify from 'dompurify'; export default function Comment({ content }) { // 净化 HTML 内容 const sanitizedContent = DOMPurify.sanitize(content); return ( <div dangerouslySetInnerHTML={{ __html: sanitizedContent }} /> ); } // 服务器端设置 CSP 头 // next.config.js module.exports = { async headers() { return [ { source: '/(.*)', headers: [ { key: 'Content-Security-Policy', value: "default-src 'self'; script-src 'self' 'unsafe-inline' https://trusted-cdn.com" } ] } ]; } }; 

3. CSRF 防护

// 正确姿势:防止 CSRF // pages/api/protected.js import csrf from 'csurf'; const csrfProtection = csrf({ cookie: true }); export default function handler(req, res) { csrfProtection(req, res, () => { // 受保护的 API 逻辑 }); } // 客户端 // components/Form.jsx export default function Form() { const [csrfToken, setCsrfToken] = useState(''); useEffect(() => { // 获取 CSRF token fetch('/api/csrf-token') .then(res => res.json()) .then(data => setCsrfToken(data.token)); }, []); const handleSubmit = async (e) => { e.preventDefault(); await fetch('/api/protected', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRF-Token': csrfToken }, body: JSON.stringify({ data: 'test' }) }); }; return ( <form onSubmit={handleSubmit}> <input type="hidden" name="_csrf" value={csrfToken} /> {/* 表单内容 */} </form> ); } 

毒舌点评:这才叫现代前端,安全第一,让黑客无处下手。

Read more

WorkBuddy 安装使用完全指南:腾讯版“小龙虾“,一句话让 AI 替你干活

不用部署云服务器,不用写代码,下载安装即可使用。WorkBuddy 是腾讯推出的 AI 原生桌面智能体工作台,让"一句话完成复杂办公任务"真正成为现实。 一、WorkBuddy 是什么? 1.1 一句话定义 WorkBuddy 是腾讯云推出的 AI 原生桌面智能体(Desktop AI Agent)工作台,基于腾讯 CodeBuddy 同源架构构建。它不是一个只会聊天的对话框,而是一个能听懂人话、自主思考、直接操作你电脑上文件的 AI 同事。 你只需用自然语言描述需求,WorkBuddy 就能自动规划、拆解、执行多步骤任务,直接交付可验收的成果——Excel 报表、PPT 演示文稿、调研报告、数据分析图表,应有尽有。 1.2

Windows 使用 Codex 一直“正在思考”?一招解决 AI 工具代理问题(附一键切换脚本)

📚 目录 一、问题背景:Codex 一直“正在思考”却没有回答 二、第一步:查看本机代理端口 三、第二步:测试代理是否可用 四、第三步:给 Codex App 配置代理 五、让 Codex 代理配置生效 六、验证代理是否生效 七、如何取消代理配置 八、代理配置是否会影响国内软件 九、开发者推荐的代理配置方式 十、完整流程总结 一、问题背景 最近在 Windows 上使用 Codex 时遇到了一个很奇怪的问题: 输入问题后,界面一直显示: 正在思考 但是 没有任何回答。 最开始以为是: * Codex Bug * API Key

2026年3月大模型全景深度解析:国产登顶、百万上下文落地、Agent工业化,AI实用时代全面来临[特殊字符]

2026年3月大模型全景深度解析:国产登顶、百万上下文落地、Agent工业化,AI实用时代全面来临[特殊字符]

🔥个人主页:北极的代码(欢迎来访) 🎬作者简介:java后端学习者 ❄️个人专栏:苍穹外卖日记,SSM框架深入,JavaWeb ✨命运的结局尽可永在,不屈的挑战却不可须臾或缺! 前言: 2026年3月,全球大模型领域迎来颠覆性变革——国产模型实现全球调用量反超,百万上下文从“实验室概念”变成“工业级标配”,Agent智能体摆脱“玩具级应用”,正式进入千行百业。本文将从行业格局、核心技术、产业落地 3大维度,结合具体产品参数、技术细节和实战案例,全面拆解当前大模型最新动态,帮开发者精准把握AI时代红利(干货密集,建议收藏反复研读)。 一、行业炸点:国产大模型历史性反超,全球格局彻底重塑(附权威数据) 2026年3月,OpenRouter(全球最大AI模型调用统计平台)、斯坦福HAI研究院联合发布《全球大模型发展月报》,核心数据颠覆行业认知:中国大模型周调用量达4.69万亿Token,同比增长320%,连续两周超越美国(4.21万亿Token),全球调用量TOP10中,

从学术到工业:基于Llama Factory的论文复现与生产级部署全流程

从学术到工业:基于Llama Factory的论文复现与生产级部署全流程 作为一名AI研究员,你是否经常遇到这样的困境:好不容易复现了顶会论文的方法,却发现实验代码混乱不堪,难以转化为可落地的产品?本文将手把手教你如何通过Llama Factory框架,实现从学术研究到工业部署的无缝衔接。 Llama Factory是一个开源的低代码大模型微调框架,它集成了业界主流的微调技术(如LoRA、全参数微调等),支持LLaMA、Qwen、ChatGLM等上百种模型。这类任务通常需要GPU环境,目前ZEEKLOG算力平台提供了包含该镜像的预置环境,可快速部署验证。下面我们分四个关键步骤展开: 一、为什么选择Llama Factory? * 研究灵活性:支持增量预训练、指令微调、DPO训练等多种范式 * 工程友好性:提供标准化API接口和Web UI,告别"实验室代码" * 多模型支持:覆盖LLaMA-3、Qwen2、ChatGLM3等主流架构 * 资源高效:LoRA等轻量化方法可节省80%显存 实测发现,使用Qwen2-7B模型进行LoRA微调时,显存占用可从24GB降至8G