常见Web安全问题及防御策略,想转行当程序员的必看
常见Web安全问题及防御策略想转行当程序员的必看1)要在各个不同层面不同方面实施安全方案避免出现疏漏不同安全方案之间需要相互配合构成一个整体;2)要在正确的地方做正确的事情即在解决根本问题的地方实施针对性的安全方案。数据与代码分离原则这一原则适用于各种由于“注入”而引发安全问题的场景。实际上缓冲区溢出也可以认为是程序违背了这一原则的后果——程序在栈或者堆中将用户数据当做代码执行混淆了代码与数据的边界从而导致安全问题的发生。不可预测性原则微软使用的ASLR技术在较新版本的Linux内核中也支持。在ASLR的控制下一个程序每次启动时其进程的栈基址都不相同具有一定的随机性对于攻击者来说这就是“不可预测性”。不可预测性能有效地对抗基于篡改伪造的攻击。不可预测性的实现往往需要用到加密算法随机数算法哈希算法好好利用这条规则在设计安全方案时往往会事半功倍。2、常见WEB安全2.1 XSSXSS (Cross Site Script)跨站脚本攻击因为缩写和 CSS (Cascading Style Sheets) 重叠所以只能叫 XSS。XSS 的原理是恶意攻击者往 Web 页面里插入恶意可执行网页脚本代码当用户浏览该页之时嵌入其中 Web 里面的脚本代码会被执行从而可以达到攻击者盗取用户信息或其他侵犯用户安全隐私的目的。XSS 的攻击方式千变万化但还是可以大致细分为几种类型非持久型XSS也叫反射型 XSS 漏洞一般是通过给别人发送带有恶意脚本代码参数的 URL当 URL 地址被打开时特有的恶意代码参数被 HTML 解析、执行。持久型XSS持久型 XSS 攻击不需要诱骗点击黑客只需要在提交表单的地方完成注入即可但是这种 XSS 攻击的成本相对还是很高。未经验证的跳转XSS一些场景是后端需要对一个传进来的待跳转的 URL 参数进行一个 302 跳转可能其中会带有一些用户的敏感(cookie)信息。2.2 CSRFCSRF(Cross-Site Request Forgery)名为跨站请求伪造攻击。那么 CSRF 到底能够干嘛呢?你可以这样简单的理解攻击者可以盗用你的登陆信息以你的身份模拟发送各种请求。攻击者只要借助少许的社会工程学的诡计。例如通过 QQ 等聊天软件发送的链接(有些还伪装成短域名用户无法分辨)攻击者就能迫使 Web 应用的用户去执行攻击者预设的操作。例如当用户登录网络银行去查看其存款余额在他没有退出时就点击了一个 QQ 好友发来的链接那么该用户银行帐户中的资金就有可能被转移到攻击者指定的帐户中。所以遇到 CSRF 攻击时将对终端用户的数据和操作指令构成严重的威胁。当受攻击的终端用户具有管理员帐户的时候CSRF 攻击将危及整个 Web 应用程序。CSRF 原理下图大概描述了 CSRF 攻击的原理CSRF 攻击必须要有三个条件 :用户已经登录了站点 A并在本地记录了 cookie2 . 在用户没有登出站点 A 的情况下(也就是 cookie 生效的情况下)访问了恶意攻击者提供的引诱危险站点 B (B 站点要求访问站点A)。3 . 站点 A 没有做任何 CSRF 防御预防 CSRFCSRF 的防御可以从服务端和客户端两方面着手防御效果是从服务端着手效果比较好现在一般的 CSRF 防御也都在服务端进行。服务端的预防 CSRF 攻击的方式方法有多种但思路上都是差不多的主要从以下两个方面入手 :1 . 正确使用 GETPOST 请求和 cookie2 . 在非 GET 请求中增加 tokenCSRF 的防御可以根据应用场景的不同自行选择。CSRF 的防御工作确实会在正常业务逻辑的基础上带来很多额外的开发量但是这种工作量是值得的毕竟用户隐私以及财产安全是产品最基础的根本。2.3 SQL 注入SQL 注入漏洞(SQL Injection)是 Web 开发中最常见的一种安全漏洞。攻击者利用这个漏洞可以访问或修改数据或者利用潜在的数据库漏洞进行攻击。而造成 SQL 注入的原因是因为程序没有有效的转义过滤用户的输入使攻击者成功的向服务器提交恶意的 SQL 查询代码程序在接收后错误的将攻击者的输入作为查询语句的一部分执行导致原始的查询逻辑被改变额外的执行了攻击者精心构造的恶意代码。如何预防防止 SQL 注入主要是不能允许用户输入的内容影响正常的 SQL 语句的逻辑当用户的输入信心将要用来拼接 SQL 语句的话我们应该永远选择不相信任何内容都必须进行转义过滤当然做到这个还是不够的下面列出防御 SQL 注入的几点注意事项严格限制Web应用的数据库的操作权限给此用户提供仅仅能够满足其工作的最低权限从而最大限度的减少注入攻击对数据库的危害;后端代码检查输入的数据是否符合预期严格限制变量的类型例如使用正则表达式进行一些匹配处理;对进入数据库的特殊字符进行转义处理或编码转换;所有的查询语句建议使用数据库提供的参数化查询接口参数化的语句使用参数而不是将用户输入变量嵌入到 SQL 语句中即不要直接拼接 SQL 语句。2.4 DDoS 攻击DDoS 又叫分布式拒绝服务全称 Distributed Denial of Service。其原理就是利用大量的请求造成资源过载导致服务不可用这个攻击应该不能算是安全问题这应该算是一个另类的存在因为这种攻击根本就是耍流氓的存在「伤敌一千自损八百」的行为。DDoS 攻击可以理解为「你开了一家店隔壁家店看不惯就雇了一大堆黑社会人员进你店里干坐着也不消费其他客人也进不来导致你营业惨淡」。自我介绍一下小编13年上海交大毕业曾经在小公司待过也去过华为、OPPO等大厂18年进入阿里一直到现在。深知大多数网络安全工程师想要提升技能往往是自己摸索成长但自己不成体系的自学效果低效又漫长而且极易碰到天花板技术停滞不前因此收集整理了一份《2024年网络安全全套学习资料》初衷也很简单就是希望能够帮助到想自学提升又不知道该从何学起的朋友。以上资料如何领取