您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 工学 > 复旦大学高级web技术课件11Web安全技术
韩伟力韩伟力内容安排y安全技术简介y数据源层的安全y数据源层的安全y应用服务层的安全yHTTP安全yHTTP安全y展示层安全yXSS及其防御yXSS及其防御yCSRF及其防御y钓鱼及其攻击y钓鱼及其攻击y口令管理yCAPTCHACAPTCHA内容安排安全技术简介1111安全技术简介11112222数据源层的安全3333数据源层的安全应用服务层的安全3333应用服务层的安全4444HTTP安全4444HTTP安全5555展示层安全5555展示层安全什么是安全y信息安全是一个十分广泛而又复杂的话题y美国国家电信和信息安全委员会(NSTISSC) y美国国家电信和信息安全委员会(NSTISSC) y信息安全是对信息、系统以及使用、存储和传输信息的硬件的保护但是要保护信息及其相关系统诸如策略硬件的保护。但是要保护信息及其相关系统,诸如策略、认识、培训和教育以及技术手段都是必要的。y微软公司M. Howard, D. LeBlance微软公司,y一个安全的产品应该是指在信息所有者或者系统管理员控制下能够保护客户数据的机密性、完整性和可用性,能够保护资源处理过程的完整性和有效性能够保护资源处理过程的完整性和有效性。y机密性(Confidentiality)、完整性(Integrity) 和可用性(Ailbilit) 的组合可用性(Availability) 的组合机密性y机密性是指保证计算机相关的有价值财产(信息)只能被授权过的用户所访问。y机密性的保护y认证和访问控制y加密5完整性完整性是指这些计算机相关的有价值财产(信息)只y完整性是指这些计算机相关的有价值财产(信息)只能被授权过的用户所修改,或者通过授权过的过程所修改修改。y完整性的保护认证和访问控制y认证和访问控制y加密6可用性y可用性是指这些有价值的财产(信息)在需要的时候必须能够被授权的用户访问或者修改。y可用性的破坏yDOS: Denial Of Service 7可用性破坏案例可用性破坏案例ySYN Flood的基本原理SYN Flood的基本原理ySYN Flood是当前昀流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负大量伪的接请求从而使得被攻击方资源耗尽满负荷或内存不足)的攻击方式。y要明白这种攻击的基本原理,还是要从TCP连接建立的过程开始说起:TCP与UDP不同,它是基于连接的,也就是说:为了在服务端和客户端之间传送TCP数据必须先建立个虚拟电路也就是端和客户端之间传送TCP数据,必须先建立一个虚拟电路,也就是TCP连接,建立TCP连接的标准过程是这样的:y首先,请求端(客户端)发送一个包含SYN标志的TCP报文,SYN即同步(Synchronize),同步报文会指明客户端使用的端口以及TCP连接步(Synchronize),同步报文会指明客户端使用的端口以及TCP连接的初始序号;y第二步,服务器在收到客户端的SYN报文后,将返回一个SYN+ACK的报文,表示客户端的请求被接受,同时TCP序号被加一,ACK即确认(Akldt)(Acknowledgement)。y第三步,客户端也返回一个确认报文ACK给服务器端,同样TCP序列号被加一,到此一个TCP连接完成。y以上的连接过程在TCP协议中被称为三次握手(Three‐way 8y以上的连接过程在TCP协议中被称为三次握手(Threeway Handshake)。可用性破坏案例(续)可用性破坏案例(续)y问题就出在TCP连接的三次握手中,假设一个用户向服务器发送了问题就出在TCP连接的三次握手中,假设个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)这种情况下服务器端般会重试(再次发送给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒‐2分钟);一个用户出现异常导致服务器的一个线程等待1分3钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源‐‐数以万计的半连接,即使是简单的保存并遍历也会消耗非常多的时间和内存何还要不断对这个列表中的消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。实际上如果服务器的TCP/IP栈不够强大,昀后的结果往往是堆栈溢出崩溃‐‐即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称作:服务器端受到了SYN Fld攻击(SYN洪水攻击)9器端受到了SYN Flood攻击(SYN洪水攻击)。可用性破坏案例(续)y从防御角度来说,有几种简单的解决方法:y第一种是缩短SYN Timeout时间,由于SYN Flood攻击的效果取决于服务器上保持的SYN半连接数这个值=SYN攻击的频度xSYN 于服务器上保持的SYN半连接数,这个值=SYN攻击的频度xSYN Timeout,所以通过缩短从接收到SYN报文到确定这个报文无效并丢弃改连接的时间,例如设置为20秒以下(过低的SYN Timeout设置可能会影响客户的正常访问),可以成倍的降低服务器的负荷。y第二种方法是设置SYN Cookie,就是给每一个请求连接的IP地址分配一个Cookie,如果短时间内连续受到某个IP的重复SYN报文,就认定是受到了攻击,以后从这个IP地址来的包会被丢弃。可是上述的两种方法只能对付比较原始的攻击y可是上述的两种方法只能对付比较原始的SYN Flood攻击,缩短SYN Timeout时间仅在对方攻击频度不高的情况下生效,SYN Cookie更依赖于对方使用真实的IP地址,如果攻数度发利击者以数万/秒的速度发送SYN报文,同时利用SOCK_RAW随机改写IP报文中的源地址,以上的方法将毫无用武之地。10无用武机密性,完整性和可用性及其之间的关系机密性机密性安全完整性可用性安全完整性可用性11CIA分类C, I, A分类y小李拷贝了小王的作业小李拷贝了小王的作业y小李让小王的计算机崩溃了y小李将小王的支票从100元修改到1000元小李将小的支票从元修改到元y小李冒用死去的老张的签名y小李注册了一个域名,并拒绝复旦大学g购买并且使用这个域名y小李得到小王的信用卡卡号并让信用卡公司删除这个卡,然后重新办理了新的卡并使用原有卡的信用然后重新办理了新的卡,并使用原有卡的信用y小李哄骗小王计算机的IP检测,得到了访问小王计算机的访问许可的访问许可12研究安全的方法学ThreatsPolicySpecificationSpecificationDesigngImplementationOperation保护信息系统安全的技术y认证授权与访问控制y授权与访问控制y审计y加密和解密身份认证y客户端需要向一个或者多个服务器或者服务证实自己的身份三种基本方式y三种基本方式①用户所知道的某个秘密信息,如自己的口令;②用户持有的某个秘密信息如智能卡中存储的用户个人②用户持有的某个秘密信息,如智能卡中存储的用户个人化参数;③用户所具有的某些生物学特征,如指纹、声音、DNA图案等图案等。y你知道什么,你拥有什么,你是什么。y其中第一种昀为常用y其中第一种昀为常用授权与访问控制y访问控制的三个主要研究对象:SbjObjPliSubject,Object,Policyy访问控制的三个主要功能:Authorization, Revocation, Evaluationy访问控制定义:访控制定义是解决谁(主体)对某个特定对象(客体)具有何种权限的一项系统安全技术。它包括两方面的关键技术一方面是安全策略的制定技术即如何键技术,方面是安全策略的制定技术,即如何表达主体对客体有何种权限,另一方面是安全策略的实现技术,即如何将制定的策略在系统中有效地执行效地执行。审计y审计:一个过程-该过程中,为了汇报可以计量的信息同已建立的标准之间的关系由一个独立的个体积累和评估已建立的标准之间的关系,由个独立的个体积累和评估事实y检查可接受标准一致性的过程称为审计检查可接受标准致性的过程称为审计y负责独立检查计算机安全的部门称为审计部门y审计促进了实际环境同已建立的策略和指导原则的一致性,y审计促进了实际环境同已建立的策略和指导原则的致性,从而提高了企业计算安全的整体级别y审计部门必须同他所要服务的计算群体保持一个良好的关审计部门必须同他所要服务的计算群体保持个良好的关系加密和解密y对称加密DESDESAESyDES,3DES,AESy非对称加密yRSA,ECCy单向加密yMD5,SHA‐1,SHA‐256内容安排安全技术简介1111安全技术简介11112222数据源层的安全3333数据源层的安全应用服务层的安全3333应用服务层的安全4444HTTP安全4444HTTP安全5555展示层安全5555展示层安全数据源层的安全问题y本身的安全机制认证y认证y访问控制审计y审计ySQL注入y加密存储SQL注入攻击y应用层攻击y很难防御的攻击行为y在应用操作界面直接操作数据库,以获取对敏感数据的非法访问许可WebServerDatabaseServerApplicationServerWebInjectedSQLInputPageAccessExecution!ValidationFlawSQL注入的简单例子-数据库表格create table Users(inner_idintnot nulluniqueidentity(1 1)uniqueidentity(1, 1),useridchar (64)primary key,dh(6)passwdvarchar(64),usernamevarchar(128),gendervarchar(1)not null,emailvarchar(64)not null,status intnot nulldefault 0))SQL注入的简单例子-page23SQL注入的简单例子-codepublic booleanvalidateLoginSQLInjection2(String userid, String password, String authcode){ListUser userlist= userDAO.getHibernateTemplate().find(from User where userid= ' + userid+' and d'd')password='+password+' );try{if (userlist.size()0)return true;}catch(Exception e){preturn false;}return false;return false;}24SQL注入的简单例子-initial datainsert into Users (userid, passwd, username, gender, email, status)values('weili', 'weili', 'han weili', 'M', 'wlhan@fudan.edu.cn', 0)25跳检查跳过检查26通过SQL注入实现DoSQyweili' shutdown ‐‐27修改URL修改URLyhttp://***.***.***/showarticle?id=12yhttp://***.***.***/showarticle?id=12or 1=1y
本文标题:复旦大学高级web技术课件11Web安全技术
链接地址:https://www.777doc.com/doc-10674049 .html