SQL注入( SQL injection )是一种将恶意代码插入到程序 SQL 语句中,从而误导数据库执行恶意逻辑的攻击技术。通过 SQL 注入,攻击者可以达到获取敏感信息,窃取访问权限等目的。
因此,在设计数据库应用时,必须警惕 SQL 注入风险,并加以防范。
SQL注入( SQL injection )是一种将恶意代码插入到程序 SQL 语句中,从而误导数据库执行恶意逻辑的攻击技术。通过 SQL 注入,攻击者可以达到获取敏感信息,窃取访问权限等目的。
因此,在设计数据库应用时,必须警惕 SQL 注入风险,并加以防范。
随着互联网的蓬勃发展,各式各样的网站如雨后春笋般迸发出来,Web 逐渐成为 TCP/IP 协议栈的杀手锏应用。
那么,Web 应用是如何登上武林盟主之位的?它都包含哪些要素?又是如何工作的?本文带领大家,好好捋一捋 Web 应用背后的故事。
网络技术的发展激起人们对信息的渴望,但早年间信息的获取手段还相对有限,而且很不方便。你得知道自己想要的信息(一般是文件)在什么服务器上,应该使用什么软件来下载,而且信息与信息间缺少关联。
为了解决诸多不便,英国科学家 蒂姆·伯纳斯-李 在 1980 年发明了 万维网( world wide web ),简称 Web 。这是一个由许多互相链接的超文本 网页 组成的信息系统,可以通过 互联网 来访问。
传输层引入了 端口 ( port )的概念,很好地实现了进程间通信能力。我们已经学过这一层中的 UDP 协议,它是一种 面向数据报 的传输层协议。
UDP 协议非常简单,它只是在 IP 协议的基础之上,加入 端口号 来区分收发进程,因此也有不少局限性。
我们知道,UDP 数据报需要借助 IP 包提供的点对点传输能力,从一台主机发往另一台主机。
前面介绍网络层和 IP 协议时,有个问题被我们束之高阁——如何由 IP 地址找到与之对应的 MAC 地址呢?
在时间查询服务中,客户端需要知道服务端的 IP 地址和端口号,才能发起请求。但我们应该如何记忆 IP 地址和端口号呢?要知道,人类记忆数字型信息,比如电话号码等,并不擅长。
端口其实还好。因为经过多年的发展,常用网络服务形成了一套约定俗成的惯例,这就是所谓的 知名端口 。举个例子, Web 服务一般采用 80 端口。我们用浏览器访问网站,甚至都不需要输入端口号,默认就是 80 端口。
IP 地址就不一样了。 10.35.87.61
这个 IP 地址比 80 端口难记多了。不仅如此,不同的服务可能部署在不同的机器,IP 地址也肯定是不一样的。很显然,百度的服务器,地址肯定跟淘宝的不一样。
我们每天都会访问很多网站,想记住它们的 IP 地址,显然是不可能的!如果能够通过名字来访问,则事半功倍,因为我们记忆文本要比记忆数字更拿手。
为此,网络先驱们发明了域名和域名系统,这就是本文的主角。
网络通信过程中可能出现各种各样的差错,因此需要具备 差错传送 机制。开始介绍解决方案前,我们先考察一下问题的背景:
随着互联网技术的发展和应用,我们的生活方式发生了翻天覆地的变化。我们可以通过互联网:
互联网无处不在,因此也成为现代软件开发中绕不开的一环。作为互联网时代的开发人员,对互联网工作原理进行一次全面学习,很有必要。不然,连原理都搞不明白,怎么做好互联网应用开发呢?
那么,互联网是如何工作的呢?我们打开一个浏览器浏览网页时,背后都发送哪些事情呢?
Web 是互联网上最流行的应用,没有之一。Web 网站由 HTML 网页和相关资源组成,通过 Web 服务器对外服务。用户则通过浏览器连接 Web 服务器,浏览网页。
世界上有成千上万的网站,而浏览器也是五花八门。浏览器 和 Web 服务器必须对如何请求和响应数据达成一致,否则就乱套了。这就是本文要讨论的 超文本传输协议( hypertext transfer protocol ),即 HTTP 协议负责的范畴。
HTTP 协议是一种应用层协议,它规定了参与 Web 通信的浏览器和 Web 服务器之间的通信细节。HTTP 协议主要用于传输超文本网页及其相关网络资源,其中
上一小节,我们简单介绍了 TCP 协议的基本机制,但很多细节还来不及展开。此时此刻,我们甚至对 TCP 的传输单元长啥样都一无所知。不过没关系,本节我们再接再厉,争取将它一举拿下!
由于 TCP 协议位于传输层,它的传输单元一般叫做 TCP段( segment ),也可译为 TCP分组 。当然了,也有不少文献将它笼统地称为 TCP报文 。
那么,一个 TCP 报文段的格式到底是怎样的呢?它跟 UDP 数据报又有哪些异同呢?
与 UDP 数据报一样,TCP 报文也分为头部和数据两个部分。所不同的是,TCP 报文头部要比 UDP 复杂很多: