news 2026/4/30 20:50:33

常见Web安全问题及防御策略,想转行当程序员的必看

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
常见Web安全问题及防御策略,想转行当程序员的必看

常见Web安全问题及防御策略,想转行当程序员的必看

1)要在各个不同层面,不同方面实施安全方案,避免出现疏漏,不同安全方案之间需要相互配合,构成一个整体;
2)要在正确的地方做正确的事情,即:在解决根本问题的地方实施针对性的安全方案。
数据与代码分离原则
这一原则适用于各种由于“注入”而引发安全问题的场景。
实际上,缓冲区溢出,也可以认为是程序违背了这一原则的后果——程序在栈或者堆中,将用户数据当做代码执行,混淆了代码与数据的边界,从而导致安全问题的发生。
不可预测性原则
微软使用的ASLR技术,在较新版本的Linux内核中也支持。在ASLR的控制下,一个程序每次启动时,其进程的栈基址都不相同,具有一定的随机性,对于攻击者来说,这就是“不可预测性”。
不可预测性,能有效地对抗基于篡改,伪造的攻击。
不可预测性的实现往往需要用到加密算法,随机数算法,哈希算法,好好利用这条规则,在设计安全方案时往往会事半功倍。
2、常见WEB安全
2.1 XSS
XSS (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 CSRF
CSRF(Cross-Site Request Forgery),名为:跨站请求伪造攻击。
那么 CSRF 到底能够干嘛呢?
你可以这样简单的理解:攻击者可以盗用你的登陆信息,以你的身份模拟发送各种请求。攻击者只要借助少许的社会工程学的诡计。
例如通过 QQ 等聊天软件发送的链接(有些还伪装成短域名,用户无法分辨),攻击者就能迫使 Web 应用的用户去执行攻击者预设的操作。例如,当用户登录网络银行去查看其存款余额,在他没有退出时,就点击了一个 QQ 好友发来的链接,那么该用户银行帐户中的资金就有可能被转移到攻击者指定的帐户中。
所以遇到 CSRF 攻击时,将对终端用户的数据和操作指令构成严重的威胁。当受攻击的终端用户具有管理员帐户的时候,CSRF 攻击将危及整个 Web 应用程序。
CSRF 原理
下图大概描述了 CSRF 攻击的原理:

CSRF 攻击必须要有三个条件 :

  1. 用户已经登录了站点 A,并在本地记录了 cookie
    2 . 在用户没有登出站点 A 的情况下(也就是 cookie 生效的情况下),访问了恶意攻击者提供的引诱危险站点 B (B 站点要求访问站点A)。
    3 . 站点 A 没有做任何 CSRF 防御
    预防 CSRF
    CSRF 的防御可以从服务端和客户端两方面着手,防御效果是从服务端着手效果比较好,现在一般的 CSRF 防御也都在服务端进行。服务端的预防 CSRF 攻击的方式方法有多种,但思路上都是差不多的,主要从以下两个方面入手 :
    1 . 正确使用 GET,POST 请求和 cookie
    2 . 在非 GET 请求中增加 token
    CSRF 的防御可以根据应用场景的不同自行选择。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年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
    ![img](https://i-blog.csdnimg.cn/img_convert/133c6dbf20ddecdfc008928aec66b634.png

《网络安全从零到精通全套学习大礼包》

96节从入门到精通的全套视频教程免费领取

如果你也想通过学网络安全技术去帮助就业和转行,我可以把我自己亲自录制的96节 从零基础到精通的视频教程以及配套学习资料无偿分享给你。

网络安全学习路线图

想要学习 网络安全,作为新手一定要先按照路线图学习方向不对,努力白费。对于从来没有接触过网络安全的同学,我帮大家准备了从零基础到精通学习成长路线图以及学习规划。可以说是最科学最系统的学习路线,大家跟着这个路线图学习准没错。

配套实战项目/源码

所有视频教程所涉及的实战项目和项目源码

学习电子书籍

学习网络安全必看的书籍和文章的PDF,市面上网络安全书籍确实太多了,这些是我精选出来的

面试真题/经验

以上资料如何领取?

b97ae8ac36b2a650.png)

以上资料如何领取?

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 11:10:03

JS逆向学习之JS语法(一)

JS逆向学习之JS语法(一) 目录 1.前言: 为什么在渗透测试/安全领域要熟悉 JS 逆向? ▪ 典型场景与案例分析 2. JavaScript 基础语法概览 2.1变量 2.1.1 变量声明方式 2.1.2 常用数据类型 2.2运算符 2.3函数 2.3.1 函数声明 & …

作者头像 李华
网站建设 2026/4/30 20:46:03

老猿学5G:从QoS参数到计费策略,解码5QI、ARP与多量纲计费实战

1. 5G多量纲计费:从传统模式到精细化运营 记得我第一次接触5G计费方案时,被运营商发来的账单吓了一跳——同样的流量使用量,费用却比4G时代高出不少。后来才明白,这就是5G多量纲计费的典型特征。传统计费就像去餐厅按菜品数量结账…

作者头像 李华
网站建设 2026/4/18 12:04:11

别再只用ros::Time::now()计时了!ROS时间API的5个实战技巧与常见误区

ROS时间API实战指南:从基础到高阶的5个关键技巧 在机器人操作系统(ROS)开发中,时间处理是构建可靠系统的基石。许多开发者习惯性地使用ros::Time::now()进行简单计时,却忽略了ROS时间API提供的丰富功能和潜在陷阱。本文将带您深入探索ROS时间…

作者头像 李华
网站建设 2026/4/16 11:49:16

RESTful API设计最佳实践:构建可扩展的后端服务

RESTful API设计最佳实践:构建可扩展的后端服务 在当今的微服务架构和前后端分离开发模式下,设计高质量的RESTful API变得尤为重要。本文基于最新的行业标准和实践,为您提供一套完整的RESTful API设计指南,帮助构建可扩展、可维护…

作者头像 李华
网站建设 2026/4/16 11:49:15

告别英文界面困扰:Android Studio中文语言包完全指南

告别英文界面困扰:Android Studio中文语言包完全指南 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 还在为Android S…

作者头像 李华