密码存储为什么不能明文
密码为什么不能明文存储,这是一个基础但容易被忽视的问题。本文讲正确的做法。
安全问题要默认不信任输入
无论是表单、URL 参数、Header,还是内部系统传来的字段,都不能天然相信。后端必须做校验、鉴权和日志审计。
SQL 注入的例子
危险写法:
String sql = "select * from user where name = '" + name + "'"; |
推荐使用预编译参数:
SELECT * FROM user WHERE name = ?; |
在 MyBatis 中优先使用 #{name},不要用 ${name} 拼接用户输入。
权限校验
登录只说明“你是谁”,权限校验才说明“你能做什么”。敏感操作必须在服务端校验资源归属。