web安全学习笔记【网络安全】

news2024/9/20 22:33:57

前言

本文简单记录一下我学习 Web 安全方面的笔记。

本文不涉及 IIS、Windows 和 SqlServer 的安全管理与配置,尽量只谈编程相关的安全问题。

这个 Web 安全学习路线,整体大概半年左右,具体视每个人的情况而定。

(上传一直很模糊,所以就没有展开了,需要高清版的可以在下面领取)

👉 【一学习路线高清版一】👈

如果你把每周要学的内容精细化到这种程度,你还会担心学不会,入不了门吗,其实说到底就是学了两个月,但都是东学一下,西学一下,什么内容都是浅尝辄止,没有深入进去,所以才会有学了 2 个月,入不了门这种感受。

最简单的 Web 物理架构

您必须了解 HTTP 协议,可以阅读这篇文章:HTTP 协议详解,简单总结如下:

  • 浏览器和服务器的通信采用无状态的 HTTP 协议。
  • 通过控制 HTTP 的请求头,可以控制:客户端缓存、Cookie、请求编码、相应编码等。
  • 请求内容向服务器提交数据(POST 和 GET),响应内容向浏览器发送数据。
  • Cookie 包含在每个请求和响应中,因此客户端和服务器都可以访问到。
  • 一般使用 Cookie 来维护一个浏览器会话(也有其他方式)。

攻击方式总览

这里有一个一般性的介绍:网站安全。

Web 软件安全攻击防护

浏览器安全攻击

Cookie 假冒

定义

非期望的修改 Cookie 的值。

场景

服务器将用户的授权信息存储在 Cookie 中,然后客户端用这些 Cookie 决定导航的显示与否。如果有程序恶意的修改了Cookie,会导致权限提升。

攻击方式

  • 注入的 Javascript 代码。
  • 使用浏览器调试工具。
  • 本机病毒等。

防护措施

  • 尽量将 Cookie 设置为 HttpOnly,浏览器伪造不了这种 Cookie。
  • 防止 Javascript 注入。

隐藏变量修改

定义

非期望的修改隐藏变量。

场景

订单的折扣计算完全依赖客户端的某个变量,这个变量是从服务器生成的,所有逻辑都在客户端计算,服务器只是接受最后的计算结果。如果有程序恶意的修改了变量,会绕过某些业务逻辑。

攻击方式

  • 注入的 Javascript 代码。
  • 使用浏览器调试工具。

保护措施

  • 防止 Javascript 注入。
  • 关键的功能不要依靠客户端控制,要采用服务器控制。

跨站脚本攻击

定义

恶意的提交 Javascript 代码。

场景

在博客的评论功能中,如果用户恶意的提交 Javascript 代码,假如这些 Javascript 没有被过滤,极端的情况下,这些代码会劫持所有访问此页面用户的会话,访问和修改任意数据。

攻击方式

  • 注入的 Javascript 代码。
  • 使用浏览器调试工具。

保护措施

  • 在服务器端验证和过滤恶意输入。
  • 开启 ValidateRequest="true"。
  • 对输出使用 this.Server.HtmlEncode。

服务器安全攻击

缓冲区溢出

定义

某些可能输入会导致服务器堆栈溢出,这直接致使服务器不可用。

场景

程序提供了某项计算密集型的功能,此功能没有限制用户输入,用户在有意或无意之间输入了一个非法的值,导致了缓冲区溢出。

攻击方式

  • 非法输入。

保护措施

  • 在服务器端验证和过滤恶意输入。
  • 采用防伪式编程。

认证逃避

定义

某些 URL 没有出现在主页导航界面,系统只对导航页面进行了认证和授权管理,这些没有出现在导航中的 URL 可能被恶意用户给分析出来,直接进行访问。

场景

用户管理分为三个页面:List.aspx、New.aspx,程序只对 List.aspx 进行认证和授权了,某些用户直接访问 New.aspx 执行添加操作。

攻击方式

  • 直接地址访问。

保护措施

  • 梳理网站的整体结构,对所有页面进行认证和授权管理。

非法输入

定义

病从口入,祸从口出。很多攻击方式都是因为非法输入导致的。

场景

程序只在客户端对输入进行了验证,服务器未做任何验证,恶意的程序可以绕过客户端逻辑直接向服务器提交非法输入,这很容易导致各种安全问题。

攻击方式

  • 注入的 Javascript 代码。
  • 使用浏览器调试工具。

保护措施

  • 在服务器端验证和过滤恶意输入。
  • 防止 Javascript 注入。

授权逃避

定义

某些 URL 没有出现在主页导航界面,系统只对导航页面进行了认证和授权管理,这些没有出现在导航中的 URL 可能被恶意用户给分析出来,直接进行访问。还有一种可能是:系统只在客户端进行了授权管理,服务器代码并没有进行授权验证,恶意用户很容易就可以逃避授权。

场景

当用户没有 Create 权限的时候,系统只是禁用了浏览器按钮,并没有做服务器授权,然后用户使用浏览器调试工具启用了按钮,就可以执行 Create 了。

攻击方式

  • 直接地址访问。
  • 修改客户端代码。

保护措施

  • 梳理网站的整体结构,对所有页面进行认证和授权管理。
  • 在服务器进行授权管理。

SQL 注入

定义

对于和后台数据库产生交互的网页,如果没有对用户输入数据的合法性进行全面的判断,就会使应用程序存在安全隐患。用户可以在可以提交正常数据的URL或者表单输入框中提交一段精心构造的数据库查询代码,使后台应用执行攻击着的SQL代码,攻击者根据程序返回的结果,获得某些他想得知的敏感数据,如管理员密码,保密商业资料等。

场景

服务器程序使用字符串拼接的方式来构造 SQL 语句,这就会导致 SQL 注入攻击的可能。

攻击方式

  • 恶意的提交 SQL 片段。

保护措施

  • 在服务器端验证和过滤恶意输入。
  • 不要拼凑 SQL 参数,采用 DbParameter 设置参数。
  • 最小化 SQL Server 访问账户的权限。

异常敏感信息泄露

定义

未处理异常直接显示到浏览器,这会导致敏感信息被泄露,对最终用户来说,也会让他们感觉系统不够安全和易用。

场景

因为开发原因,在某些场景下浏览器将后端的异常直接显示给浏览器了,如:NullReferenceException等。

攻击方式

  • 在调用的最上层,为处理掉全部异常。
  • 在调用的下层,为封装合适的异常信息。

保护措施

  • 定义合理的异常处理策略。
  • 异常一定不能跨越边界直接显示到浏览器。

上传攻击

定义

用户恶意的上传外挂、木马和其它程序等。

场景

你做了一个上传功能,结果对上传的文件没有做好足够的控制,比如:某些恶意的用户会上传一些恶意的脚本,然后执行这些脚本。

攻击方式

  • 上传恶意文件。

保护措施

  • 在服务器端验证和过滤恶意输入,如:后缀名限制。
  • 对上传后的文件进行扫描和杀毒。

抵赖

定义

某些用户由于某些原因,不愿意承认自己执行过某些操作,当然,某些操作可能是他们没有意识的情况下执行的。

场景

用户一不小心执行的删除操作,然后立即发现自己操作错误了,然后他打电话给售后,说系统有问题。

攻击方式

  • 界面引导不够友好,容易导致误操作,为了推卸责任,进行抵赖。
  • 用户恶意的执行操作,然后抵赖。

保护措施

  • 提高界面的易用性。
  • 关键操作的提醒要足够明显。
  • 所有操作要留下操作日志。

数据库安全攻击

连接字符串暴漏

定义

数据库连接字符串中包含用户名和密码,这些信息以明文的形式存储在配置文件中,运维和开发人员都能看得到,随着团队人员的流动,这些敏感信息也会暴漏。

场景

直接将连接字符串配置在 Web.Config 中,而这个文件没有被加密。

攻击方式

  • 未加密连接字符串。
  • 未加密配置文件。

保护措施

  • 加密连接字符串。
  • 加密配置文件。

存储数据泄露和篡改

定义

某些敏感信息最终需要被存储在数据库中,如果这些信息被存储为明文,会有很多人员可以看到这些信息,极端情况下,某些黑客攻陷了服务器,也可以看到这些数据。

场景

为加密密码、关键财务信息,税务局来查账了。

攻击方式

  • 未加密敏感数据。
  • 加密方法过于简单。

保护措施

  • 加密敏感数据。
  • 对某些数据采用不可逆加密,如:密码。
  • 对某些数据采用可逆加密,如:财务数据。

网络安全攻击

拒绝服务攻击

定义

恶意用户试图攻击服务器、网络和系统,最终的目的是让系统不可用,停止对外服务。

场景

恶意用户在尝试并发的无限制的向服务器发送请求,试图让服务器的负载达到最大,最终让系统停止对外服务。

攻击方式

  • 攻击网络。
  • 攻击服务器。
  • 攻击系统。

保护措施

  • 在程序级别,识别并拦截恶意的请求。
  • 购买第三方安全软件。

传输数组泄露、篡改

定义

恶意的代理服务器或路由器拦截用户的请求,读取或修改敏感数据。

场景

您在咖啡馆发现了一个免费的 WIFI,然后偷偷的接入了,您还暗自高兴,当您使用这个免费的 WIFI 进行网上冲浪的时候,您的各种信息都会被 WIFI 给拦截,如果是恶意的用户,结果可想而知。

攻击方式

  • 绑架路由器。
  • 免费 WIFI 骗局。
  • 为加密的传输协议。
  • 未加密的传输数据。

保护措施

  • 加强客户端路由的安全管理。
  • 慎重的选择代理服务器。
  • 使用安全的传输协议,如:SSL。

备注

这篇算是安全方面的 Hello,World了,今后好好好学习一下安全方面的知识,目前找到了两个好的资源,如:

  • Security in the .NET Framework。
  • .NET Security Overview。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/536434.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

支持AI算法定制的4G摄像头模组解决方案

随着科技的不断发展,现在人们对于监控摄像头的需求越来越高,但是市场上的大多数摄像头组件都是标准化的,很难满足不同应用场景的需求。 不过,现在有了这款支持AI算法定制的4G摄像头模组解决方案,这个问题就完美的解决了…

shell脚本教程

目录 一、shell历史 二、执行脚本 三、基本语法 3.1变量 3.1.1变量的分类 3.1.2删除变量 3.2文件名代换(Globbing) 3.3命令代换 3.4算术代换 3.5转义字符 3.6单引号 3.7双引号 四、Shell脚本语法 4.1条件测试 4.2分支 4.2.1if/then/elif…

重磅!用友荣登全球5强

近日,全球权威信息技术研究和顾问公司Gartner发布《Market Share: All Software Markets, Worldwide,2022》报告,用友在EAM(资产管理)市场再创新高,市场占有率位居全球第五位,亚太第一位&#x…

quic详解

目录 一 http简介 二 quic协议详解 1 重传机制 2 流量控制 3连接迁移 一 http简介 http0.9 1991年发布, 没有header,功能非常简单,只支持GET http1.0 1996年发布,明文传输安全性差,header特别大。它相对0.9有以…

postgres_exporter 部署

目录 - 下载地址- 配置环境变量- 启动vim ./start.shvim ./stop.shqueries.yaml - 配置prometheus - 下载地址 https://github.com/prometheus-community/postgres_exporter/releases - 配置环境变量 - 启动 因启动前需要配置环境变量后再进行启动 运行如下语句&#xff1a…

【自动化测试入门知识】自动化测试生命周期

如今,项目经理和开发人员面临着用最少的资源并在日渐缩减的时间表中构建可靠应用程序的挑战。因此,组织正在转向自动化测试以有效地实现此目标。 在自动化测试方面,我们许多人认为这只是SDLC(软件开发生命周期)的一部…

【竣达】浅谈电视台机房智能化动力环境监控系统管理

电视台作为面向全国甚至是世界的广播平台,在节目转播过程中不能有任何的闪失,为了最大限度保障电视节目的安全播出,一套完整的机房动力环境监控系统必不可少。 电视台机房及广播控制室建立包括机房动力、环境及安防的监控系统,主…

30岁女程序媛,对职业和未来的迷茫和焦虑

前言 2023快过去一半马上就要2024年了,92年的我就要步入30的行列了。 一转眼,也到了三十而立的年纪。 反观自己,到了这个时候,更多的是迷茫、彷徨、焦虑、无措 但也在不断地跌跌撞撞中,找到了自己的节奏和目标。 …

程序员一个月拿两万,得知卖猪肉可以赚五万,你是选择做程序员还是卖猪肉?

在知乎上看到这么个帖子,觉得挺有意思,大家一起瞧瞧? 对此,我也看到了许多犀利的回答哈 **A:**我反过来问你,如果一对夫妇卖猪肉一个月只能挣一万,听说一名程序员一个月拿五万,他们…

【轻量化网络系列(1)】MobileNetV1论文超详细解读(翻译 +学习笔记+代码实现)

前言 这几天学了一下轻量化网络,我们先从MobileNetV1讲起吧~ MobileNetV1网络是谷歌团队在2017年提出的,专注于移动端和嵌入设备的轻量级CNN网络,相比于传统的神经网络,在准确率小幅度降低的前提下大大减少模型的参数与运算量。…

机器学习 day13(正则化,线性回归的正则化,逻辑回归的正则化)

正则化的思想 如果特征的参数值更小,那么对模型有影响的特征就越少,模型就越简单,因此就不太容易过拟合 如上图所示,成本函数中有W₃和W₄,且他们的系数很大,要想让该成本函数达到最小值,就得使…

【软件测试】未来软件测试必备的八大技能!你缺少哪个?

软件测试工程师是个神奇的职业,他是开发人员与老板之间的传话筒(三夹板),也是开发人员与老板的好帮手; 他不仅需要有销售的沟通能力,也需要具备编辑人员的文档撰写技巧。如此一个面面俱到的岗位&#xff0…

软件设计师--易错题集结

计算机组成与结构 海明校验码是在n个数据位之外增选择题设k个校验位,从而形成一个kn位的新的码字,使新的码字的码距比较均匀地拉大。n与k的关系是(A)。 A、2k-1≥nk B、2n-1≤nk C、nk D、n-1≤k 知识: 确定要传输的信…

小白眼中的卷积神经网络(CNN)

相信和笔者一样爱技术对AI兴趣浓厚的小伙伴们,一定对卷积神经网络并不陌生,也一定曾经对如此“高级”的名字困惑良久。今天让我们一起回顾/学习这玩意到底是什么和为什么呢。 引言 说起CNN,必然会首先想到的是CV吧,而边缘检测可…

电动车防盗器语音芯片方案——NV020C 直推0.5w喇叭

电动车已经成为了越来越多个人的出行交通便利公交,近几年来各式各样的电动车也在不断更新中,功能也逐渐变多。电动车防盗装置也在逐渐更新换代中,其中电动车电池盒成为有些人窥测的重点对象。部分电动车的电池盒锁结构简单,很容易…

FiftyOne 系列教程(2)使用FiftyOne读取数据集

1. 支持的数据集 1.1. 支持各种常见的数据集格式 docs.voxel51.com/user guide/dataset creation/datasets.html#supported import formats此外,zoo上面有什么数据集,这里就可以加载到对应的数据集Available Zoo Datasets — FiftyOne 0.20.1 document…

终端电阻对CAN总线的影响

在进行CAN总线通信前,应保证正确的总线配置,比如终端电阻。它是影响总线通信的重要组件,下面我们不考虑信号的完整性,只从信号幅度和时间常数方面分析不加终端电阻时的影响。 根据ISO11898-2对终端电阻的取值规定,必须…

八股文大全

八股文大全 1. 基础篇1.1 网络基础1.1.1 TCP 三次握手1.1.2 TCP四次挥手![在这里插入图片描述](https://img-blog.csdnimg.cn/90a6997e8d414c84b499167c99da0397.png)1.1.3 TCP常见面试题 1. 基础篇 1.1 网络基础 1.1.1 TCP 三次握手 三次握手过程: 客户端——发…

Thread线程学习(3) 了解Linux线程中的pthread_cancel()函数

目录 一、了解pthread_cancel()函数 二、使用pthread_cancel()函数的基础示例 三、使用pthread_cancel()函数取消线程的进阶示例 (1) 注意事项 (2) 进阶示例 四、pthread_cancel()函数的扩展内容 (1) 如何定义取消点: (2) 使用pthread_cancel()函数需要谨慎…

电极法测污水常规五参数(PH、电导率、溶解氧、温度、浊度)

检测水质常规五参数的意义: pH:地表水水质中pH值的变化会影响藻类对氧气的摄入能力及动物对食物的摄取敏感度; 电导率:主要是测水的导电性,监测水体中总的离子浓度。包含了各种化学物质、重金属、杂质等等各种导电性物…