SQL注入
SQL注入发生在应用构造SQL语句时,使用了未过滤的用户输入,导致SQL语义被破坏。
-
案例:用户输入
' OR 1=1; --
密码登录绕过 -
防范:使用参数化的SQL语句,将用户输入作为参数而不是直接拼接SQL字符串。
XSS(跨站脚本攻击)
注入恶意脚本进网站,当其他用户浏览该页面时,嵌入的脚本会被执行。
-
存储型XSS:恶意脚本存储在网站数据中(评论、用户名等)
-
反射型XSS:恶意脚本来自请求查询字符串或POST请求数据
-
DOM型XSS:JavaScript动态生成的网页内容创建的XSS
-
检测:手工检查、自动扫描器
-
防范:对用户输入进行HTML转义,转义< > " '等特殊字符
CSRF(跨站请求伪造)
利用网站对用户登录态的信任,诱使用户在未意识的情况下,执行非本意的操作。
-
攻击流程:
-
用户登录受信网站A,获得Cookie
-
用户访问恶意网站B,网站Bcontains针对网站A的 CSRF攻击代码
-
用户浏览器自动发送Cookie和请求到网站A
-
网站A认为是用户发出的正常请求,执行操作
-
-
防范:在表单中加入token,并验证token,确保请求来源正确。
密码管理
-
不要存储明文密码
-
使用Argon2或BCrypt加密算法
-
添加随机的盐值,防止彩虹表攻击
-
Key stretching:迭代次数增加,计算量大大增加,防止枚举和暴力破解
会话管理
-
会话ID生成:使用随机字符串,足够的长度和熵
-
会话保护:Cookie HttpOnly、设置过期时间等
-
会话固定攻击:不允许用户选择会话ID,会话ID存在漏洞的网站上