前言:大家好,今天给大家介绍一下Web安全领域的一些常见安全问题。1.SQL注入SQL注入攻击的核心是让Web服务器执行攻击者预期的SQL语句,从而获取数据库中感兴趣的数据或进行读取、修改、删除、插入等操作数据库达到其邪恶目的。以及如何让Web服务器执行攻击者的SQL语句呢?SQL注入的常规套路是将SQL语句放在表单或请求参数中,提交给后端服务器。如果后端服务器不检查输入安全,直接取出变量进行数据库查询,就很容易被骗。举例如下:对于一个根据用户ID获取用户信息的接口,后端的SQL语句一般是这样的:selectname,[...]fromt_userwhereid=$id其中$id是前端提交的用户id,如果前端请求是这样的:GETxx/userinfo?id=1%20or%201=1其中请求参数id转义后为1或1=1。如果后端没有经过安全过滤,直接提交数据库查询,SQL语句就变成了是:selectname,[...]fromt_userwhereid=1or1=1结果是找出user表的所有数据,这样就实现了黑客泄露数据的目的。上面只是一个很简单的例子。在真正的SQL注入攻击中,参数构造和SQL语句要比这复杂得多,但原理是一样的。2、XSS攻击XSS的全称是CrossSiteScripting(跨站脚本)。为了区别于重叠样式表CSS,又改了一个缩写XSS。XSS攻击的核心是将可执行的前端脚本代码(通常是JavaScript)植入网页。听起来很尴尬。说白了就是攻击者想让你的浏览器执行他写的JS代码。如何?XSS一般分为两种类型:反射型1.攻击者将JS代码作为请求参数放置在URL中,诱导用户点击。例子:http://localhost:8080/test?name=2、用户点击后,将JS发送到Web服务器后端为a请求参数3.后台服务器不检查过滤,简单处理后放入网页文本返回给浏览器4.浏览器解析返回网页,命中!存储型的攻击脚本从服务器传过来后直接返回给浏览器触发执行。存储类型的区别在于攻击脚本可以存储在数据库中。稍后查询时,会将攻击脚本渲染到网页中返回给浏览器。触发执行。常见套路示例如下:1.攻击者在网页回复,帖子中包含JS脚本。2、回复提交到服务器后,存入数据库。3.其他网友查看帖子,后台查询帖子回复内容,构建完整网页,返回浏览器4.网友浏览器渲染返回网页,他中招了!3.CSRFAttackCSRF,跨站请求伪造,其核心思想是在打开网站A时,打开一个标签页打开恶意网站B,此时,在页面B的“怂恿”下,浏览器发起攻击针对网站A的HTTP请求。这个过程的危害在于两点:1、这个HTTP请求不是用户的主动意图,而是B的“教唆”。如果是比较有害的请求操作(发邮件?删除数据?等),就麻烦了。2、因为之前打开过网站A,浏览器中保存了A发出的用于身份认证的cookie或者其他信息,所以这次被“策动”的请求会自动带上这些信息,网站后台A将无法区分这是否是用户的真实意图一目了然4.DDoS攻击DDoS的全称是DistributedDenialofService:分布式拒绝服务攻击。它是拒绝服务攻击的升级版。顾名思义,拒绝服务攻击会使服务不可用。常用于攻击对外提供服务的服务器,如常见的:Web服务、邮件服务、DNS服务、即时通讯服务……攻击者不断发出服务请求,使合法用户的请求无法得到及时处理,这是DoS攻击。攻击者利用多台计算机或计算机集群进行DoS攻击,即DDoS攻击。在早期互联网技术还没有那么发达的时候,发起DoS攻击是非常容易的:一台性能很强的电脑,写一个多线程的程序不断向服务器请求,服务器不堪重负,最终无法正常处理要求。对于其他普通用户来说,网站似乎无法访问,这就是拒绝服务的含义。后来随着技术的发展,现在的服务器不再是服务器那么简单了。当你访问一个www.baidu.com的域名时,背后有无数的CDN节点和无数的Web服务器。在这种情况下,如果还想依靠单台计算机来尝试让网络服务满载,无异于以卵击石。对方不下来,你先下去。技术从来都是一把双刃剑。分布式技术可以用来提供高可用的服务,也可以被攻击者用来进行大规模杀伤性攻击。攻击者不再局限于单台计算机的攻击能力,而是通过大规模的网络集群发起拒绝服务攻击。5、DNS劫持在当今的互联网流量中,以HTTP/HTTPS为主的Web服务产生的流量占了绝大多数。Web服务的发展如火如荼,而这背后还有一个不为人知的大功臣,那就是域名解析系统:如果没有DNS,我们上网时需要记住的是每个网站的IP地址,而不是他们的域名。互联网。这是一场灾难,幸好DNS默默无闻这一切都是在幕后完成的,我们只需要记住一个域名,剩下的就由DNS来做。也正是因为它的重要性,别有用心的人不会放过它,发明了DNS劫持技术。DNS提供将域名转换为IP地址的服务。但是在早期协议的设计中,并没有过多考虑其安全性。对于查询方:我请求的真的是DNS服务器吗?是别人冒充的吗?查询结果是否被篡改?这个IP真的属于这个网站吗?DNS协议中没有机制来确保这些问题能够得到解答,因此DNS劫持非常猖獗。从用户在地址栏中输入域名的那一刻起,一路上的危险就让人防不胜防:本地计算机中的木马修改了本地计算机中的hosts文件。木马修改DNS报文中的回复。网络中的节点(例如路由器)修改DNS数据包中的回复。网络中的节点(比如运营商)修改DNS包中的回复...后来,为了端到端检查收到的DNS响应,DNSSEC技术出现了,可以解决一些以上问题在一定程度上。但由于某些原因,这项技术一直没有大规模使用,尤其是在中国,很少部署。后来,阿里、腾讯等互联网大厂开始推出httpDNS服务,想出了一招灭火。虽然这项技术的名字还有DNS这三个字母,但是实现方式却和原来的DNS不同。不是,通过这项技术,DNS成为了http协议之上的应用服务。6.JSON劫持JSON是一种轻量级的数据交换格式,劫持就是窃取数据(或者应该叫劫持,拦截更合适。恶意攻击者使用一些特定的手段返回应该发送给用户的数据。这是JSON劫持的一般意思,一般来说劫持的JSON数据中包含敏感信息或者有价值的数据。7.暴力破解这个一般的密码,弱密码(WeakPassword)很容易被别人猜到(懂行的人)youwell等)或者通过破解工具暴力破解。解决方案的密码复杂度必须足够大,并且必须足够隐蔽以限制尝试次数8.HTTPHeaderTracingVulnerabilityHTTP/1.1(RFC2616)规范定义HTTPTRACE方法,主要用于客户端通过向Web服务器提交TRACE请求来测试或获取诊断信息,当Web服务器启用TRACE时,提交的请求头将在内容(Body)中完整返回服务器响应的一部分,其中HTTP标头可能包含会话令牌、Cookie或其他身份验证信息。攻击者可以利用该漏洞欺骗合法用户,获取其隐私信息。解决方案:禁用HTTPTRACE方法。9、信息泄露由于Web服务器或应用程序没有正确处理一些特殊请求,从而泄露了Web服务器的一些敏感信息,如用户名、密码、源代码、服务器信息、配置信息等。因此,它一般需要注意:应用程序报错时,并不会产生外部调试信息。过滤用户提交的数据和特殊字符,确保源代码和服务器配置的安全。10.目录遍历漏洞。附加../或附加../的某些变体(例如..\或..//或什至其编码)允许攻击者访问未经授权的目录并在Web服务器的根目录之外执行命令。11、命令执行漏洞命令执行漏洞是通过URL发起请求,在Web服务器端执行未经授权的命令,获取系统信息,篡改系统配置,控制整个系统,使系统瘫痪。12、文件上传漏洞如果不对文件上传路径变量进行严格过滤,并且不严格限制用户上传的文件后缀和文件类型,攻击者可以通过Web访问的目录上传任意文件,包括网站后门文件(webshel??l),然后Remotelycontrolwebservers。因此,一般需要注意:在开发网站和应用程序的过程中,需要对上传的文件进行严格的限制和校验,禁止上传恶意代码文件,限制相关目录的执行权限,防止webshel??l攻击13.其他漏洞SSLStrip攻击OpenSSLHeartbleed安全漏洞CCS注入漏洞CCS注入漏洞证书有效性验证漏洞14.业务漏洞一般业务漏洞与具体应用相关,如参数篡改(流水号ID/订单,1元支付),重放攻击(假装支付)、权限控制(越权操作)等
