网站常用安全漏洞
常见安全事件:
数据泄露;服务瘫痪;成果失窃;系统劫持。
漏洞分类
可分为服务端漏洞和客户端漏洞
服务端漏洞:
第三方组件漏洞: 如打印日志过程中重载mylog,
可以采用厂商提供的相关工具。 以java为例: 针对Java可以选择使用dependency-check-maven检查项目以来的组件是否存在安全漏洞
SQL注入: 很多时候查询语句采用了简单的字符串拼接
SQL语句静态模板和动态数据部分没有严格区分,如果再数据项中加入某些SQL语句关键字,则这些SQL语句就很可能再数据库写入或者读取数据时得到执行。 不要将param 带入 order 防护方法:
1.尽量不要基于DB的raw方法拼接构造SQL语句,而应该使用预编译、ORM框架 2.使用ORM框架时,应该注意框架中的特性,可能存在不安全的写法导致的SQL注入问题 3.在复杂场景一定要是使用拼接SQL,需要对外部输入进行转义。
命令执行 同样也是数据和代码没有分开来。
防护方法:设置白名单;对数据类型进行校验;转义。
越权漏洞
- 水平越权:通过遍历ID查询。 涉及资源ID尽量不要使用短ID
- 垂直越权: 场景,通过开通另外的测试管理员账户抓包获取接口,或者你想前端代码方式获取实际接口。防护方式: 对不同的API分组引入Middleware进行权限拦截。
SSRF 比较高级,现在可以忽略。
文件上传漏洞
客户端漏洞
开放重定向
攻击者可以构造恶意链接,诱导用户重定向到恶意站点
修复方案: 对重定向严格进行白名单控制并正确校验匹配白名单。
XSS(跨站脚本攻击) 实际上是一种JavaScript注入,当用户访问页面时,嵌入其中的代码会执行。
防护方法:输入过滤;输出过滤;
CSRF(跨站请求伪造)
更改用户的邮箱地址。
防护方式:防护的核心是判断请求的来源
点击劫持
是一种在网页中将恶意代码等隐藏在看似无害或者存在有道的内容之下,并诱使用户点击的手段,
防护的核心是不让非预期的网站iframe我的网站。