一、跨站脚本攻击XSS:cross-site scripting
攻击者往页面插入恶意html标签或js代码
问题
- 盗取页面数据:DOM、Cookie、localstorage等
- DOS攻击,占用服务器资源
- 破坏页面结构
- 流量劫持(链接指向某网站)
类型
- 存储型:恶意脚本存储在目标服务器上(数据库),用户保存数据(用户私信等),持久性好。服务器端安全漏洞
- 反射型:诱惑用户访问带有恶意代码的URL,服务器端处理,浏览器端执行,如网站搜索、跳转等,用户主动。服务器端安全漏洞
- Dom型:修改页面DOM节点,浏览器端取出和执行恶意代码。前端js安全漏洞
- 突变型(mxss):通过浏览器引擎发生突变,渲染成有潜在风险的脚本
防护措施
- 对用户输入进行严格的校验和清理,防止恶意代码注入
- 使用纯前端,不用服务器端拼接返回
- 使用content security policy(csp)、白名单来控制哪些资源可以加载
- 内容安全策略:http-equiv=“content-security-policy”
- 在输出到HTML、js、css上下文之前,对数据进行适当的编码
- 使用具有内置安全机制的框架,如React、angular
- 敏感信息保护,cookie使用http-only,验证码
eg.使用textcontent代替innerHtml
二、跨站请求伪造CSRF
通过欺骗用户在登录的状态下执行未授权的操作
本质:cookie会在同源请求中携带发送给服务器端,实现用户冒充
类型
- GET请求 img标签
- POST表单
- 链接 a标签href
防护措施
- CSRF Token验证:服务器返回随机的Token。缺点:负载均衡时无token
在每个敏感操作中使用唯一的CSRF令牌:服务器端生成CSRF令牌并存储在session中 - 同源检测:验证请求的来源是否可信,服务器根据http请求头中origin或referer判断是否允许访问,都不存在直接阻止,但referer可被伪造,还会屏蔽搜索引擎的链接
referer:告诉服务器页面链接 - 对cookie双重验证:服务器向请求域名注入cookie,URL中加入cookie,缺点:网站存在xss则失效,子域名隔离
- 设置cookie时设置samesite,限制cookie不能被第三方使用
samesite模式:严格模式(cookie不能作为第三方使用)、宽松模式(GET请求且会发生页面跳转时可用cookie)
三、文件上传漏洞
允许攻击者上传恶意文件啊,如脚本或可执行文件
防护措施
- 只允许上传特定类型的文件
- 将上传的文件存储到不直接执行的目录中
- 对上传文件进行重命名,避免使用用户提供的文件名
四、点击劫持ClickJacking
通过透明覆盖的方式(如隐藏的iframe)欺骗用户点击恶意链接,执行恶意操作
防护措施
- 在响应头中添加x-frame-option:DENY或SAMEORIGIN
- 使用content security policy(csp)来控制哪些资源可以加载
五、会话劫持
通过盗取用户的会话令牌来冒充用户
防护措施
- 使用安全的会话管理机制(如HTTPS,HTTP Only和secure标志的cookie)
- 生成随机且复杂的会话id
- 在用户操作期间定期更新会话id
六、不安全的重定向和跳转
防护措施
- 对重定向的URL进行白名单验证
- 验证跳转请求的合法性
- 使用HTTP Only和secure标志的cookie
敏感数据泄漏
可能发生在数据传输、存储或处理过程中
防护措施
- 使用HTTPS确保数据在传输过程中加密
- 对存储的敏感信息进行加密
- 只收集和存储必要的信息
七、SQL注入
通过把SQL命令插入到web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令
防护措施
- 对用户输入进行合适的转义和过滤
- 使用安全的模版引擎或自动转义函数
八、安全配置
错误的安全配置可能导致系统暴露在攻击者面前
防护措施
- 确保所有软件和依赖项都保持最新
- 关闭不必要的端口和服务
- 使用安全配置基线来配置服务和应用
九、目录遍历
通过操纵文件路径来访问服务器上任意文件
防护措施
- 对用户输入的文件路径进行验证和规范化,防止访问超出预期的目录
- 确保web服务器只具有所需的最低权限
十、安全审计和监控
可以帮助检测和响应潜在的安全威胁
防护措施
- 对关键操作和异常行为进行记录
- 部署入侵检测系统(IDS)来监控和检测异常行动
- 定期进行安全设计和渗透测试,发现和修复漏洞
十一、HTTPS中间人攻击
即使服务器端开启了HTTPS,攻击者仍可能通过SSL Stripping等手段强制降级为HTTP,进行中间人攻击。
防护措施
- 强制使用HTTPS通信,防止中间人攻击;
- 使用HSTS告知浏览器强制使用HTTPS;
十二、CDN劫持
攻击者劫持CDN服务器,篡改前端资源,实施攻击。
防护措施
SRI(Subresource Integrity):验证静态资源的完整性,防止被篡改。
十三、错误的内容推断
攻击者可能通过推断网页内容,注入恶意代码。