Web安全入门:读懂Web世界里的攻防
- 一、什么是Web安全
- 二、Web安全为什么很重要
- [三、Web常见漏洞简介(OWASP Top10核心)](#三、Web常见漏洞简介(OWASP Top10核心))
- 四、Web攻击的基本思路
- 五、Web安全防护思路
- 六、Web安全学习方向
- 结尾
一、什么是Web安全
Web安全,全称Web应用安全,属于网络安全的一个分支,专门研究网站、Web系统、小程序后台、API接口这类基于HTTP/HTTPS的应用所面临的安全风险、防护方案与攻防思路。
我们日常浏览网页、登录账号、网上购物、提交表单、使用后台管理系统,全部都在和Web应用打交道。Web应用运行在服务端,接收浏览器、客户端发来的请求,处理数据并返回页面。一旦代码设计缺陷、配置不当,攻击者就可以利用漏洞窃取数据、篡改页面、接管服务器。Web安全的目标,就是保障Web应用的保密性、完整性、可用性。
-
保密性:敏感数据(账号密码、手机号、用户资料)不被未授权人员读取;
-
完整性:页面内容、业务数据不能被恶意篡改;
-
可用性:网站服务不会被攻击导致瘫痪,正常用户可以访问。
二、Web安全为什么很重要
Web应用是互联网对外暴露最直接的入口。相比于内网系统,网站、API需要对外开放端口,任何人都可以发起访问,天然更容易成为攻击目标。
常见危害:
-
用户信息泄露:数据库被拖库,手机号、身份证、密码大量流出;
-
网页篡改:网站首页被挂上黑页、虚假广告,损害企业公信力;
-
账户劫持:攻击者盗取管理员或普通用户账号,登录后台操作;
-
业务损失:恶意下单、刷券、越权查看他人订单,造成经济损失;
-
服务器沦陷:通过Web漏洞拿到服务器权限,把服务器当作肉鸡,发起更多攻击。
随着《网络安全法》《数据安全法》《个人信息保护法》落地,企业如果因安全漏洞造成用户数据泄露,不仅要承担民事赔偿,严重情况下负责人还会承担法律责任。
三、Web常见漏洞简介(OWASP Top10核心)
OWASP(开放式Web应用安全项目)是Web安全领域权威组织,定期总结Web应用最危险的十大漏洞,也是安全从业者入门必学内容。
-
**注入漏洞(Injection)**最经典的是SQL注入。程序直接把前端输入拼接到SQL语句中执行,攻击者输入特殊字符,改变SQL原有逻辑,读取、修改数据库。除此之外还有命令注入、XPath注入等。
例:搜索框输入特殊语句,直接查询全部用户密码。
-
**跨站脚本 XSS(Cross-Site Scripting)**网站没有过滤用户输入的脚本代码,恶意JS代码存入页面。其他用户访问页面时,脚本在受害者浏览器执行,可窃取Cookie、劫持会话、钓鱼弹窗。分为存储型、反射型、DOM型XSS。
-
失效的身份认证登录机制设计缺陷。比如会话Cookie长期不失效、密码强度无限制、可暴力破解、会话ID可预测。攻击者可以直接冒充用户登录。
-
**失效的访问控制(越权)**权限校验只在前端做判断,后端没有校验。分为水平越权(看同级别其他人数据,比如查看别人订单)、垂直越权(普通用户直接访问管理员接口)。
-
安全配置错误服务器、中间件、框架默认配置不安全。例如开启不必要的调试页面、默认账号密码、目录遍历,泄露源码和配置文件。
-
敏感数据暴露明文存储密码、HTTP明文传输数据、密钥硬编码在代码里。传输或存储时敏感数据未加密,一旦被截获直接可读。
-
跨站请求伪造 CSRF利用用户已登录的Cookie,诱导用户访问恶意页面,在不知情的情况下,以用户身份发起请求,比如修改密码、提交操作。
-
不安全的反序列化程序反序列化不可信外部数据,攻击者构造恶意序列化对象,执行任意代码,多见于Java、PHP等语言。
-
使用含有已知漏洞的组件项目引入的第三方框架、SDK、插件存在公开漏洞,但开发者没有升级版本,攻击者可以利用组件漏洞攻击。比如老旧Spring、Struts2漏洞。
-
服务器端请求伪造 SSRFWeb服务可以主动请求外部地址,攻击者利用这个能力,让服务端去访问内网地址,探测内网资产、读取内网资源。
除此之外还有文件上传漏洞(上传木马文件执行)、目录遍历、逻辑漏洞(业务逻辑缺陷,如无限重试、低价下单)等高频漏洞。业务逻辑漏洞往往比传统漏洞更容易被忽视,也更容易造成直接经济损失。
四、Web攻击的基本思路
Web攻击一般流程:
-
信息收集:扫描域名、IP、中间件版本、目录、接口,获取网站技术栈;
-
漏洞探测:使用工具+手工测试,寻找输入点、参数,尝试Payload测试是否存在漏洞;
-
漏洞利用:构造攻击语句,验证漏洞能否读取数据、执行代码;
-
权限提升:拿到低权限后,寻找本地漏洞提升权限;
-
维持访问:留下后门,方便后续再次进入;
-
痕迹清理:清除日志。
注意:未经授权对任何网站进行扫描、渗透测试属于违法行为,学习Web安全必须在自己搭建的靶场环境练习,如DVWA、WebGoat、Pikachu等。
五、Web安全防护思路
安全不是单一的防火墙,而是多层防护体系(纵深防御)。
-
代码层面
-
防注入:使用预编译语句、参数化查询,拒绝直接拼接SQL;
-
输入输出过滤:对所有用户输入做校验、转义,过滤特殊字符;
-
最小权限原则:数据库账号、服务器账号只分配必要权限;
-
避免在代码硬编码密钥、密码。
-
-
身份与权限
-
后端必须做权限校验,不能只依靠前端隐藏按钮;
-
密码加盐哈希存储(bcrypt、Argon2),禁止明文;
-
会话超时,关键操作增加验证码、二次验证。
-
-
传输与部署
-
全站启用HTTPS,加密传输;
-
关闭不必要的服务、端口,删除默认页面;
-
及时升级框架、中间件,定期做依赖漏洞扫描。
-
-
安全运营
-
上线前代码审计、安全测试;
-
WAF(Web应用防火墙)部署,拦截常见攻击Payload;
-
日志审计,监控异常访问行为;
-
定期漏洞扫描与渗透测试。
-
六、Web安全学习方向
Web安全入门一般路线:
-
基础:HTTP/HTTPS协议、HTML、JS、SQL基础;
-
漏洞原理:逐个学习OWASP Top10,本地靶场复现;
-
工具:Burp Suite、Nmap、SQLMap等工具使用;
-
进阶:代码审计、内网渗透、API安全、云原生Web安全;
-
合规:等保、数据安全相关规范。
Web安全攻防是持续博弈的过程。没有绝对安全的系统,安全工作的核心是不断发现风险,降低被攻击的概率,减少被入侵后的损失。
结尾
Web应用是互联网业务的载体,业务快速迭代的同时,安全很容易被忽略。Web安全不只是安全工程师的工作,开发、测试、运维都需要具备基础安全意识。安全左移,把安全思考融入需求、编码、测试阶段,才能从根源减少漏洞。
