基础知识

基础知识

What's

渗透测试

渗透测试(penetration test)并没有一个标准的定义,国外一些安全组织达成共识的通用说法是:

渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法。这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析,这个分析是从一个攻击者可能存在的位置来进行的,并且从这个位置有条件主动利用安全漏洞。

其具有的两个显著特点是:

  1. 渗透测试是一个渐进的并且逐步深入的过程;
  2. 渗透测试是选择不影响业务系统正常运行的攻击方法进行的测试;

方法

攻击者通过各种手段查找漏洞并加以利用达到目的。


基本概念

在进行Web渗透测试之前,攻击者需要对Web服务的一些基本概念有所了解。知己知彼,才能百战不殆。一个合格的Web渗透测试者一定对Web服务十分了解。

Basic

IP 地址####

网络之间互连的协议(IP)是Internet Protocol的外语缩写,中文缩写为“网协”。网络之间互连的协议也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。
IP协议中还有一个非常重要的内容,那就是给因特网上的每台计算机和其它设备都规定了一个唯一的地址,叫做“IP 地址”。由于有这种唯一的地址,才保证了用户在连网的计算机上操作时,能够高效而且方便地从千千万万台计算机中选出自己所需的对象来。
IP地址用二进制数来表示,每个IP地址长32比特,由4个小于256的数字组成,数字之间用点间隔,例如100.10.0.1表示一个IP地址。


域名

网络是基于TCP/IP协议进行通信和连接的,每一台主机都有一个唯一的标识固定的IP地址,以区别在网络上成千上万个用户和计算机。网络在区分所有与之相连的网络和主机时,均采用了一种唯一、通用的地址格式,即每一个与网络相连接的计算机和服务器都被指派了一个独一无二的地址。网络中的地址方案分为两套:IP地址系统域名地址系统。这两套地址系统其实是一一对应的关系。由于IP地址是数字标识,使用时难以记忆和书写,因此在IP地址的基础上又发展出一种符号化的地址方案,来代替数字型的IP地址。每一个符号化的地址都与特定的IP地址对应,这样网络上的资源访问起来就容易得多了。这个与网络上的数字型IP地址相对应的字符型地址,就被称为域名
域名可分为不同级别,包括顶级域名、二级域名、三级域名、注册域名。


DNS

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53(参见下文端口)。在RFC文档中RFC 2181对DNS有规范说明,RFC 2136对DNS的动态更新进行说明,RFC 2308对DNS查询的反向缓存进行说明。


端口

端口是英文port的意译,可以认为是计算机与外界通讯交流的出口。端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机路由器内的端口,不可见。物理端口又称为接口,是可见端口。通常在渗透测试中所指的端口是虚拟端口。


TCP/IP 协议

TCP/IP协议是Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。TCP/IP协议是网络应用程序与互联网上的主机交换数据的基础,包括后面的HTTP协议等都是建立在TCP/IP协议的基础之上。


TCP与UDP

TCP/IP协议具体又分为TCPUDP两种通信方式。

TCP在正式通信前必须要与对方建立起连接。比如你给别人打电话,必须等线路接通了、对方拿起话筒才能相互通话。
UDP在正式通信前不必与对方先建立连接,不管对方状态就直接发送。与风行的手机短信非常相似:你在发短信的时候,只需要输入对方手机号就OK了。

HTTP协议

HTTP又称为超文本传输协议(HTTP,HyperText Transfer Protocol),是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。HTTP是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。

URL

HTTP URL(URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息)的格式如下:

http://host[":"port][absolut_path]

  1. http表示要通过HTTP协议来定位网络资源;
  2. host表示合法的Internet主机域名或者IP地址;
  3. port指定一个端口号,为空则使用缺省端口80;
  4. absolut_path指定请求资源的URI,如果URL中没有给出abs_path,那么当它作为请求URI时,必须以“/”的形式给出,通常这个工作浏览器自动帮我们完成。

例如:

1、输入:www.baidu.com 浏览器自动转换成:http://www.baidu.com/
2、访问本地主机8080端口下的index.html文件:http:192.168.1.1:8080/index.html

HTTP请求

http请求由三部分组成,分别是:请求行、消息报头、请求正文

请求行

请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:

Method Request-URI HTTP-Version CRLF

  • 其中 Method表示请求方法,请求方法(所有方法全为大写)有多种,各个方法的解释如下:

      GET     请求获取Request-URI所标识的资源;
      POST    在Request-URI所标识的资源后附加新的数据;
      HEAD    请求获取由Request-URI所标识的资源的响应消息报头;
      PUT     请求服务器存储一个资源,并用Request-URI作为其标识;
      DELETE  请求服务器删除Request-URI所标识的资源;
      TRACE   请求服务器回送收到的请求信息,主要用于测试或诊断;
      CONNECT 保留将来使用;
      OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求;
    
  • Request-URI是一个统一资源标识符;

  • HTTP-Version表示请求的HTTP协议版本;

  • CR与LF分别表示表示回车和换行(除了作为结尾的CRLF外,不允许出现 单独的CR或LF字符)。

在渗透测试中常用到的是GET和POST方法:

GET方法:
在浏览器的地址栏中输入网址的方式访问网页时,浏览器采用GET方法向服务器获取资源,例如:

GET /form.html HTTP/1.1 CRLF

POST方法:
要求被请求服务器接受附在请求后面的数据,常用于提交表单。例如:
POST /index.php HTTP/1.1 (CRLF) //请求行,紧接着是消息报头
HOST:www.baidu.cn (CRLF)
Content-Length:22 (CRLF)
Connection:Keep-Alive (CRLF)
Cache-Control:no-cache (CRLF)
(CRLF)         //该CRLF表示消息报头已经结束,在此之前为消息报头
id=1234  //此行以下为提交的数据

消息报头

HTTP消息报头包括普通报头、请求报头、响应报头、实体报头。
每一个报头域都是由名字+“:”+空格+值组成,消息报头域的名字是大小写无关的。

  • 普通报头
    在普通报头中,有少数报头域用于所有的请求和响应消息,但并不用于被传输的实体,只用于传输的消息。

    请求时的缓存指令包括:

      Cache-Control、no-cache(用于指示请求或响应消息不能缓存)、no-store、max-age、max-stale、min-fresh、only-if-cached;
    

    响应时的缓存指令包括:

      public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age、s-maxage.
    

    Date 普通报头域表示消息产生的日期和时间

    Connection普通报头域允许发送指定连接的选项。例如指定连接是连续,或者指定“close”选项,通知服务器,在响应完成后,关闭连接

  • 请求报头
    请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。

    常用的请求报头

      Accept              Accept请求报头域用于指定客户端接受哪些类型的信息。例如:Accept:image/gif,表明客户端希望接受GIF图象格式的资源;Accept:text/html,表明客户端希望接受html文本。
      
      Accept-Charset       Accept-Charset请求报头域用于指定客户端接受的字符集。例如:Accept-Charset:iso-8859-1,gb2312.如果在请求消息中没有设置这个域,缺省是任何字符集都可以接受。
      
      Accept-Encoding      Accept-Encoding请求报头域类似于Accept,但是它是用于指定可接受的内容编码。例如:Accept-Encoding:gzip.deflate.如果请求消息中没有设置这个域服务器假定客户端对各种内容编码都可以接受。
    
      Accept-Language      Accept-Language请求报头域类似于Accept,但是它是用于指定一种自然语言。eg:Accept-Language:zh-cn.如果请求消息中没有设置这个报头域,服务器假定客户端对各种语言都可以接受。
    
      Authorization        Authorization请求报头域主要用于证明客户端有权查看某个资源。当浏览器访问一个页面时,如果收到服务器的响应代码为401(未授权),可以发送一个包含Authorization请求报头域的请求,要求服务器对其进行验证。
    
      Host                 发送请求时,该报头域是必需的,请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的,例如:我们在浏览器中输入:http://www.baidu.com/浏览器发送的请求消息中,就会包含Host请求报头域,如下:
      
      Host:www.baidu.com
      
      User-Agent            我们上网登陆论坛的时候,往往会看到一些欢迎信息,其中列出了你的操作系统的名称和版本,你所使用的浏览器的名称和版本,这往往让很多人感到很神奇,实际上,服务器应用程序就是从User-Agent这个请求报头域中获取到这些信息。User-Agent请求报头域允许客户端将它的操作系统、浏览器和其它属性告诉服务器。不过,这个报头域不是必需的,如果我们自己编写一个浏览器,不使用User-Agent请求报头域,那么服务器端就无法得知我们的信息了。
    

    请求报头举例:

      GET / HTTP/1.1 (CRLF)
      Accept:image/gif,image/x-xbitmap,image/jpeg,application/x-shockwave-flash,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,*/* (CRLF)
      Accept-Language:zh-cn (CRLF)
      Accept-Encoding:gzip,deflate (CRLF)
      If-Modified-Since:Wed,05 Jan 2007 11:21:25 GMT (CRLF)
      If-None-Match:W/"80b1a4c018f3c41:8317" (CRLF)
      User-Agent:Mozilla/4.0(compatible;MSIE6.0;Windows NT 5.0) (CRLF)
      Host:www.baidu.com (CRLF)
      Connection:Keep-Alive (CRLF)
      (CRLF)
    
  • 响应报头
    响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。

    常用的响应报头

      Location           Location响应报头域用于重定向接受者到一个新的位置。Location响应报头域常用在更换域名的时候。
    
      Server             Server响应报头域包含了服务器用来处理请求的软件信息。与User-Agent请求报头域是相对应的。下面是Server响应报头域的一个例子:
      
      Server:Apache-Coyote/1.1
      
      WWW-Authenticate    WWW-Authenticate响应报头域必须被包含在401(未授权的)响应消息中,客户端收到401响应消息时候,并发送Authorization报头域请求服务器对其进行验证时,服务端响应报头就包含该报头域。
    
  • 实体报头
    请求和响应消息都可以传送一个实体。一个实体由实体报头域和实体正文组成,但并不是说实体报头域和实体正文要在一起发送,可以只发送实体报头域。实体报头定义了关于实体正文(有无实体正文)和请求所标识的资源的元信息。

    常用的实体报头

      Content-Encoding             Content-Encoding实体报头域被用作媒体类型的修饰符,它的值指示了已经被应用到实体正文的附加内容的编码,因而要获得Content-Type报头域中所引用的媒体类型,必须采用相应的解码机制。Content-Encoding这样用于记录文档的压缩方法,eg:Content-Encoding:gzip
    
      Content-Language             Content-Language实体报头域描述了资源所用的自然语言。没有设置该域则认为实体内容将提供给所有的语言阅读者。
    
      Content-Length               Content-Length实体报头域用于指明实体正文的长度,以字节方式存储的十进制数字来表示。
    
      Content-Type                 Content-Type实体报头域用语指明发送给接收者的实体正文的媒体类型。
    
      Last-Modified                Last-Modified实体报头域用于指示资源的最后修改日期和时间。
    
      Expires                      Expires实体报头域给出响应过期的日期和时间。为了让代理服务器或浏览器在一段时间以后更新缓存中(再次访问曾访问过的页面时,直接从缓存中加载,缩短响应时间和降低服务器负载)的页面,我们可以使用Expires实体报头域指定页面过期的时间。HTTP1.1的客户端和缓存必须将其他非法的日期格式(包括0)看作已经过期。
    

请求正文

在消息报头后面紧接着的就是请求正文,正文前用回车换行()表示请求正文的开始。请求正文是用户提交给服务器的数据,比如文件上传时候的文件内容。


HTTP响应

在接收和解释请求消息后,服务器返回一个HTTP响应消息。HTTP响应也是由三个部分组成,分别是:状态行、消息报头、响应正文

  • 状态行格式如下:
    HTTP-Version Status-Code Reason-Phrase CRLF

      HTTP-Version表示服务器HTTP协议的版本;
      Status-Code表示服务器发回的响应状态代码;
      Reason-Phrase表示状态代码的文本描述。
    

    状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:

      1xx:指示信息--表示请求已接收,继续处理
      2xx:成功--表示请求已被成功接收、理解、接受
      3xx:重定向--要完成请求必须进行更进一步的操作
      4xx:客户端错误--请求有语法错误或请求无法实现
      5xx:服务器端错误--服务器未能实现合法的请求
    

    常见状态代码、状态描述、说明:

      200 OK      //客户端请求成功
      400 Bad Request  //客户端请求有语法错误,不能被服务器所理解
      401 Unauthorized  //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 
      403 Forbidden  //服务器收到请求,但是拒绝提供服务
      404 Not Found  //请求资源不存在,eg:输入了错误的URL
      500 Internal Server Error //服务器发生不可预期的错误
      503 Server Unavailable  //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
    

    例如:

    HTTP/1.1 200 OK (CRLF)

  • 响应报头请求部分已经描述,此处不再重述。

  • 响应正文就是服务器返回的资源的内容


FTP协议

FTP(File Transfer Protocol,文件传输协议)是TCP/IP协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。
默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。


Web服务、网页基础

Web服务器便是渗透测试者攻击的对象,掌握Web服务知识框架才能有效的进行渗透测试。我把Web服务分成了浏览器(客户端)和服务器两部分。由于种种原因,我并不会详细介绍其中涉及到的编程方面的知识,知识简单的讲解一些基本的东西,所以不要把这个当成是学习相关知识的教程。其中涉及到的编程细节请具体查找相关的资料。

可视部分 - 浏览器

在客户端所能直接体验得到的Web服务便是浏览器提供的可视化网页,也就是渗透测试将主要围绕浏览器进行。当然,也有用远程登录服务等入侵的方式。

HTML

超级文本标记语言是通过标记符号来标记要显示的网页中的各个部分。网页文件本身是一种文本文件,通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的内容(如:文字如何处理,画面如何安排,图片如何显示等)。浏览器按顺序阅读网页文件,然后根据标记符解释和显示其标记的内容,对书写出错的标记将不指出其错误,且不停止其解释执行过程,编制者只能通过显示效果来分析出错原因和出错部位。但需要注意的是,对于不同的浏览器,对同一标记符可能会有不完全相同的解释,因而可能会有不同的显示效果。

![知乎首页源代码][1]

网页文件的源代码保存为.html[后缀][2]的文件,浏览器会解释后缀为.html的文件,并显示在窗口。例如,将下面一段代码保存到一个后缀为.html的文件中,用浏览器打开:


    Hello world
    
    
Hello world!

就能看到如下的图片:

![Hello world][3]

标签

在HTML中形如的称为标签,他是HTML中的基本元素。HTML中有非常多的标签,分别完成不同的功能。每个标签拥有自己的属性,比如:


中的size、width和color都是水平线hr的属性。在标签中的/起到关闭标签的作用,例如就将前面的html标签闭合,因此这两个必须成对的出现。

HTML文件格式

根据[W3C标准][4],一个HTML文件必须按照下面的格式编写:

  

    
        
    
    
    


其中:

 声明必须是 HTML 文档的第一行,位于  标签之前。
 声明不是 HTML 标签;它是指示 web 浏览器关于页面使用哪个 HTML 版本进行编写的指令。

HTML文件中的所有标签都必须包含在中间,其中分成两个部分,head和body。

 标签用于定义文档的头部,它是所有头部元素的容器。中的元素可以引用脚本、指示浏览器在哪里找到样式表、提供元信息等等。文档的头部描述了文档的各种属性和信息,包括文档的标题、在Web中的位置以及和其他文档的关系等。绝大多数文档头部包含的数据都不会真正作为内容显示给读者。下面这些标签可用在 head 部分:, , , 
    
    
        
    

将上述代码保存为HTML文件,在浏览器中运行结果如下:

![Javascript][8]

其中中间部分为Javascript代码,这里定义了disp_alert()函数,用于显示一个对话框。在onclick属性表示当用户点击的时候,调用其值所指向的函数disp_alert()

Javascript具体的语法细节请百度。


Cookie

Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。Cookie名称和值可以由服务器端开发自己定义,这样服务器可以知道该用户是否合法用户以及是否需要重新登录等,服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器会话中的状态。

服务器可以利用Cookies包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态。Cookies最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是Cookies的功用。另一个重要应用场合是“购物车”之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入Cookies,以便在最后付款时提取信息。


不可视部分 - 服务器

服务器也称伺服器,是提供计算服务、响应用户的服务请求的设备。服务器的构成包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。普通的PC机都可以当服务器,让外界通过IP地址访问你的电脑。服务器上要有相应的服务器软件,对于[WWW服务][9],服务器上需要Web服务软件提供支持。

Web服务器软件

Web服务器可以解析HTTP协议。当Web服务器接收到一个HTTP请求,会返回一个HTTP响应,例如送回一个HTML页面。为了处理一个请求,Web服务器可以响应一个静态页面或图片,进行页面跳转,或者把动态响应的产生委托给一些其它的程序例如CGI脚本,JSP(JavaServer Pages)脚本,servlets,ASP(Active Server Pages)脚本,PHP脚本,或者一些其它的服务器端技术。Web服务器的代理模型非常简单。当一个请求被送到Web服务器里来时,它只单纯的把请求传递给可以很好的处理请求的服务器端脚本。Web服务器仅仅提供一个可以执行服务器端程序和返回(程序所产生的)响应的环境,而不会超出职能范围。

常见的Web服务器软件有:

Apache      Apache 源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自"a patchy server"的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简 单、速度快、性能稳定,并可做代理服务器来使用。

IIS         英文Internet Information Server的缩写,译成中文就是"Internet信息服务"的意思。它是微软公司主推的服务器,最新的版本是Windows2008里面包含的IIS 7,IIS与Window Server完全集成在一起,因而用户能够利用Windows Server和NTFS(NT File System,NT的文件系统)内置的安全特性,建立强大,灵活而安全的Internet和Intranet站点。

Nginx       不仅是一个小巧且高效的HTTP服务器,也可以做一个高效的负载均衡反向代理,通过它接受用户的请求并分发到多个Mongrel进程可以极大提高Rails应用的并发能力。

Lighttpd    由德国人 Jan Kneschke 领导开发的,基于BSD许可的开源WEB服务器软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,CPU占用率低,效能好,以及丰富的模块等特点。

Zeus        是一个运行于Unix下的非常优秀的Web Server,据说性能超过Apache,是效率最高的Web Server之一。

Tomcat      是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

服务器脚本

处理Web服务器委托的请求并动态的生成HTML文件的一种脚本语言。因为网页上有很多信息,随时都在更新,不可能每次都去手工把信息输到网页中把,这些人为了偷懒,便发明了一种脚本语言来动态完成这个功能。基本思路是首先建立一个网页的模板,然后用户请求的时候调用脚本把数据加添加到模板上面然后返回给用户。

常用的脚本有JSP,ASP,PHP。下面是我写的一个PHP程序的源代码:

    
    
        catch
        
    
    
    clear();
        
        $start = microtime(true);
        for ($pageCount = 1, $count = 0; $pageCount <= $total; $pageCount++) {
            print('正在分析第'.$pageCount.'页'."\n");
    
            $begin = microtime(true);
            $html = file_get_html($target_url.$pageCount);
            foreach($html->find("div[class=item] a") as $post)
            {
                $page->loadPage($post->href);
                $page->printToFile();
    
                $count++;
            }
            $html->clear();
            $end = microtime(true);
    
            $total = $end - $begin;
            print('第'.$pageCount.'页分析结束。花费了:'.$total."\n");
        }
    
        $total = $end - $start; //计算差值
        print('分析结束,共完成'.$count.'篇文章的分析。');
        print('共花时间:'.$total.'秒'."\n");
    ?>
    
    

这些脚本语言的细节不是一丁点文章便能叙述清楚的,在这里我就不做展开,具体请查找相关的资料。

---

##### Dtabase
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,可以快速方便的插入,查询,更新,删除数据。

常见的数据库有:

    ORACLE,
    SQL SERVER,
    MYSQL,
    SQL SERVER CE
    SQLITE

下面以Mysql代码演示数据库的常用操作:

1、建表格:  

    create table table_name(  
    column1 datatype [not null] [not null primary key],  
    column2 datatype [not null],  
    ...); 

说明:   

    datatype --是资料的格式,详见表。  
    nut null --可不可以允许资料有空的(尚未有资料填入)。  
    primary key --是本表的主键。 

 

2、更改表格   

    alter table table_name  
    add column column_name datatype 

 
说明:增加一个栏位(没有删除某个栏位的语法。  

    alter table table_name  
    add primary key (column_name)  

说明:更改表得的定义把某个栏位设为主键。  

    alter table table_name  
    drop primary key (column_name)  

说明:把主键的定义删除。  

3、建立索引   

    create index index_name on table_name (column_name)  

说明:对某个表格的栏位建立索引以增加查询时的速度。  

4、删除   

    drop table_name  
    drop index_name  

Mysql数据库存放数据以表(table)为单位,每个表拥有多个栏目(column),下面为一个简单的Mysql表的示例:

![Mysql][10]

关于数据库的一些具体细节,这里不做展开,请查阅相关资料。

## 后记
精力有限,很多东西简单介绍一下,并没有做展开。姑且写下这么点东西,仓促之间肯定会有不少缺失与纰漏,待到有闲时再做完善。刚学的时候并不要求全部掌握上面所讲的知识,只需有个简单了解,留下个印象,日后需要之时再结合百度等平台查阅相关资料,事半功倍。

---

## 引用 ##
[IP地址 - 百度百科][11]
[DNS服务器 - 百度百科][12]
[端口 - 百度百科][13]
[域名 - 百度百科][14]
[TCP/IP协议 - 百度百科][15]
[HTTP协议详解 - 博客园][16]
[HTTP协议 - 百度百科][17]
[FTP协议 - 百度百科][18]
[HTML - 百度百科][19]
[HTML表单 - 百度百科][20]
[CSS - 百度百科][21]
[Cookie - 百度百科][22]


  [1]: http://git.oschina.net/thinkermao/MyBlog/raw/master/res/Image/WebSecurity/QQ%E6%88%AA%E5%9B%BE20150312165401.png
  [2]: http://baike.baidu.com/view/70172.htm?fromtitle=%E6%96%87%E4%BB%B6%E5%90%8E%E7%BC%80&fromid=8663966&type=syn
  [3]: http://git.oschina.net/thinkermao/MyBlog/raw/master/res/Image/WebSecurity/QQ%E6%88%AA%E5%9B%BE20150312173204.png
  [4]: http://baike.baidu.com/link?url=BHxQECrJv4QxyzRLGvOiWtAA0e_PLVJ_28IMCAtvVR1UeEd06CrWjx6LzSlGHyig7cXJ5ZtqpY7tWfQ9vsj5F2m4hO5NL8ldUbYYMyYa1s2kIZFmaaGiRHXDYzo8Z0Yp
  [5]: http://h.hiphotos.baidu.com/baike/s=250/sign=f82e02c6cb3d70cf48faad08c8ddd1ba/d043ad4bd11373f005123f60a60f4bfbfbed041b.jpg
  [6]: http://h.hiphotos.baidu.com/baike/c0%3Dbaike80%2C5%2C5%2C80%2C26/sign=deb45f189c22720e6fc3eaa81aa26123/9d82d158ccbf6c815749d692b83eb13533fa404a.jpg
  [7]: http://a.hiphotos.baidu.com/baike/w=220/sign=f972daa2b11bb0518f24b42a067bda77/279759ee3d6d55fbe2fea0a66f224f4a20a4dd72.jpg
  [8]: http://git.oschina.net/thinkermao/MyBlog/raw/master/res/Image/WebSecurity/QQ%E6%88%AA%E5%9B%BE20150312190907.png
  [9]: http://baike.baidu.com/view/576458.htm
  [10]: http://git.oschina.net/thinkermao/MyBlog/raw/master/res/Image/WebSecurity/QQ%E6%88%AA%E5%9B%BE20150312200002.png
  [11]: http://baike.baidu.com/view/3930.htm
  [12]: http://baike.baidu.com/view/443551.htm
  [13]: http://baike.baidu.com/view/1075.htm
  [14]: http://baike.baidu.com/view/43.htm
  [15]: http://baike.baidu.com/view/7649.htm
  [16]: http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html
  [17]: http://baike.baidu.com/link?url=N8Kf-GHS6jo0iVbF9YaQst5DgKelq6cS6mrT8idS5rx6Ew-U48tJzRZ671RZkiaEYcTPAqjvVhLijhcBgIaP5K
  [18]: http://baike.baidu.com/view/1157060.htm
  [19]: http://baike.baidu.com/view/692.htm?fromtitle=%E8%B6%85%E6%96%87%E6%9C%AC%E6%A0%87%E8%AE%B0%E8%AF%AD%E8%A8%80&fromid=6972570&type=syn
  [20]: http://baike.baidu.com/link?url=OBrYm0qKGxo8Xgsdn8eNN8QPtKvZEPaU0rVHJF4xIF9Wa2AWrBoE-rAW3BwAQEIjptaFJpyABHnmY7pkMJ4LLq
  [21]: http://baike.baidu.com/link?url=kpnfYFuu91VyZodiGGysuHouMezOxtT361-crUuxzVLLEIpeidpR-vap7tHBKUpEB8RimYiBgZIBFTEk2j6qhkCNz-yZtVUvKXjh1oJxvkC
  [22]: http://baike.baidu.com/link?url=XiuMaqVDjM1K3OJYXaUphA2a_3ZlPIeZ_Z5YYymhb9AgzOwFpOFo3zjqcoRepGlAe1Yvkx2oryPLXElaYSytqqrAnVseHa0EPYltt4nZ-MO

你可能感兴趣的:(基础知识)