这本书介绍如何生存在 Linux 命令行的世界。不像一些书籍仅仅涉及一个程序,比如像 shell 程序,bash。 本书着眼于更宏大的视角,试着向你传授如何与命令行界面友好相处。 它是怎样工作的? 它能做什么? 使用它的最好方法是什么?
2021年05月30日
笔者在学习Web安全的过程中,深切地感受到相关的知识浩如烟海,而且很大一部分知识点都相对零散,如果没有相对清晰的脉络作为参考,会给学习带来一些不必要的负担。因此,在对Web安全有了浅薄的了解之后,尝试把一些知识、想法整理记录下来,最后形成了这份笔记,希望能够为正在入门的网络安全爱好者提供一定的帮助。
在开始在前,需要明确的一个问题是,Web安全是什么。比较直白的一个定义是,Web安全是包括网站、网络应用、网络服务在内的一系列安全内容,或者说,Web安全关注的是应用层的安全,尤其是细化到与网络相关内容的安全。也就是说,Web安全需要学习的内容主要包括网络协议本身、网络应用的特性与对应的安全问题、各种工具的使用。实际上这几块内容是相当零散且庞杂的,那么应该如何学习呢,笔者尝试从这本笔记组织形式来回答这个问题。
以史为鉴,可以知兴替,最先需要了解的应该是领域的发展史。要更好的理解为什么现在的Web安全领域是这样的,各个研究又是朝什么方向而发展,就需要对Web应用技术与网络攻防技术的发展与演进历史有所了解。这也是笔记的第一部分,围绕Web技术的发展与演化、安全领域的基本常识进行了记录和说明。
在对Web安全发展史有大概了解之后可以开始对计算机网络的基础知识进行学习,这是本文的第二部分,对计算机网络的部分基础知识做了介绍。考虑到网络数据库、Web服务器等技术分支较多、演进较快,本文仅仅对网络协议进行了介绍而略过了网络应用的部分,实际上应该对各种编程语言、Web应用框架、网络服务、操作系统特性有所了解。
有一定基础之后可以关注一些更细化的攻防内容,比如某个漏洞类型的研究、某种语言、应用的特性与其对应的安全问题,这是本文的第三部分。这部分按照常见的渗透测试的顺序,对信息收集、常见的Web漏洞、常见语言与框架、内网渗透的技巧等进行了简单的讲述,开始学习渗透测试之后通常会接触到这部分内容。
第四部分回到防御的视角,从安全团队的建设、威胁情报与风控等视角进行了描述,也对蜜罐、溯源等较为细节的技术内容作了一定说明。
最后是更具体的应用,以工具的介绍与使用为主,文中的这一部分推荐了一些工具与资源列表,也归档了一部分暂时没有分类的内容。
在开始在前,需要明确的一个问题是,Web安全是什么。比较直白的一个定义是,Web安全是包括网站、网络应用、网络服务在内的一系列安全内容,或者说,Web安全关注的是应用层的安全,尤其是细化到与网络相关内容的安全。也就是说,Web安全需要学习的内容主要包括网络协议本身、网络应用的特性与对应的安全问题、各种工具的使用。实际上这几块内容是相当零散且庞杂的,那么应该如何学习呢,笔者尝试从这本笔记组织形式来回答这个问题。
以史为鉴,可以知兴替,最先需要了解的应该是领域的发展史。要更好的理解为什么现在的Web安全领域是这样的,各个研究又是朝什么方向而发展,就需要对Web应用技术与网络攻防技术的发展与演进历史有所了解。这也是笔记的第一部分,围绕Web技术的发展与演化、安全领域的基本常识进行了记录和说明。
在对Web安全发展史有大概了解之后可以开始对计算机网络的基础知识进行学习,这是本文的第二部分,对计算机网络的部分基础知识做了介绍。考虑到网络数据库、Web服务器等技术分支较多、演进较快,本文仅仅对网络协议进行了介绍而略过了网络应用的部分,实际上应该对各种编程语言、Web应用框架、网络服务、操作系统特性有所了解。
有一定基础之后可以关注一些更细化的攻防内容,比如某个漏洞类型的研究、某种语言、应用的特性与其对应的安全问题,这是本文的第三部分。这部分按照常见的渗透测试的顺序,对信息收集、常见的Web漏洞、常见语言与框架、内网渗透的技巧等进行了简单的讲述,开始学习渗透测试之后通常会接触到这部分内容。
第四部分回到防御的视角,从安全团队的建设、威胁情报与风控等视角进行了描述,也对蜜罐、溯源等较为细节的技术内容作了一定说明。
最后是更具体的应用,以工具的介绍与使用为主,文中的这一部分推荐了一些工具与资源列表,也归档了一部分暂时没有分类的内容。
2021年09月06日 SQL注入是因为解释器将传入的数据当成命令执行而导致的,预编译是用于解决这个问题的一种方法。和普通的执行流程不同,预编译将一次查询通过两次交互完成,第一次交互发送查询语句的模板,由后端的SQL引擎进行解析为AST或Opcode,第二次交互发送数据,代入AST或Opcode中执行。因为此时语法解析已经完成,所以不会再出现混淆数据和代码的过程。
Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的高级程序设计语言,Java 当初诞生的时候,正是上世纪 90 年代末互联网兴起的时代,在企业应用开发中存在几个问题,一是以 IBM,SUN 和 HP 的 UNIX 服务器和大型机为主的异构环境,C/C++ 和其它语言编写的应用跨平台支持和移植比较困难,二是基于 CGI 和其它技术的网络应用从开发效率和功能性角度来看都不够理想,三是 C/C++在当时是主流编程语言,门槛高、易出错、对经验要求很高,而 Java 简单易学、安全可靠,并且一次编写到处运行,再加上 Applet、Servlet 和 JSP 技术,解决了这些痛点,满足了当时互联网程序设计和运维的要求,伴随着互联网的发展一下子就脱颖而出并长期占据主流地位。
2021年09月30日
2021年09月30日 JVM 是虚拟机的一种,它的指令集语言是字节码,字节码构成的文件是 class 文件。平常我们写的 Java 文件,需要编译为 class 文件才能交给 JVM 运行。可以这么说:C 语言代码——>二进制文件——>计算机硬件,就相当于 Java 代码——>字节码文件——>JVM。JVM 将指定的 class 文件读取到内存里,并运行该 class 文件里的 Java 程序的过程,就称之为类的加载;反之,将某个 class 文件的运行时数据从 JVM 中移除的过程,就称之为类的卸载。
2021年09月30日