Web常见的攻击手段

xss攻击

xss(cross site scripting)全称是跨站点脚本攻击。主要是在网页中嵌套恶意的脚本来获取cookie,用户名账号密码,下载恶意程序。
举个例子:
假如某网站的注册页面,当你输入用户名和密码时候,如果该用户名或密码不正确的话会重定向到原来的页面,并且用户名也会自动添加到输入框。

<input type="text" name="name" value="">
当输入的内容为:
"/><script>alert("hello")</script>
最终的效果为:
<input type="text" name="name" value=""/><script>alert("hello")</script>">

这时候就会弹出来hello。这样的恶作剧还好,如果是获取用户账号密码的的脚本呢,那样的话危害就大的多了。
Note:xss攻击的本质就是利用了网页的标签,从而做手脚。防止的办法就是对用户输入的信息进行转义或者限制用户输入非法字符。

CSRF

csrf(cross site request forgery)跨站点请求伪造。顾名思义就是非法用户伪装成用户来进行一些列de操作。
CSRF的原理如下图:
这里写图片描述
CSRF防御:
CSRF重点是非法用户来冒充用户从而进行的一些列操作,那我们可以用一些手段来防止非法用户来冒充。
1. 把cookie设置为HttpOnly。从而防止其他应用读取cookie数据。
2. 通过client端发送的token和service端的token进行对比。一致则认为是同一个用户。反之,则认为是伪装用户。
3. 通过短信或者邮件的验证码来验证。
4. 通过http的head中的refer字段的数据来判断是否来合法的网址。

SQL注入攻击

sql注入是通过sql语句来实现对数据进行操作,包括修改数据,删除数据,删除表等各种恶意的行为。
举个例子:
比如一个恶意用户登录某网站的首页,此时服务器需要去数据库中查询是否有该用户的信息,有该用户的信息登录,没有则拒绝登录。

比如执行的sql为:
select * from usertable where username='' and pwd='' 
恶意用户输入的密码为:
';drop table aaa;(假如有aaa表)
最后的sql为:
select * from usertable where username='' and pwd='';drop table aaa;
这样会删除数据库找中的aaa表。

上传文件漏洞

在上网的过程中我们会把一些文件传输到远程服务器上,从而方便随时浏览。但是对于有些恶意用户会在上传的文件中植入恶意程序,从而对服务器进行恶意操纵。
防止恶意上传文件:
很多文件类型,对于开始的几个字节是能够判断出是哪类文件(不能根据文件的后缀名来判断),这几个字节也被叫做 魔数(magic number)。
把上传的文件进行缩放,从而破坏上传文件的二进制可执行文件的结构,从而阻止恶意文件的执行。可以使用imagemagick来对图片进行缩放。

DDOS攻击

谈到DDOS就想起来我当年观看锤子坚果1的发布会,当准备购买的时候导致锤子官网发生了瘫痪造成无法购买的情况,后来官方宣称锤子官网遭受到了DDos攻击。
DDos(DistributedDenialofService)分布式拒绝服务。通俗点讲就是用各种手段消耗服务器资源,从而导致服务器反应迟缓甚至瘫痪。
SYN Flood
这个攻击是利用了TCP的三次握手,利用第三次握手服务器收不到客户端返回的确认连接信息(不存在的Ip所以收不到)。TCP的异常处理一般在这种情况下会尝试多连接几次,从而导致服务器维护大量的半连接,导致服务器消耗资源严重。
DNS Query Flood
顾名思义,频发查询DNS服务器导致解析DNS解析超时。DNS大家都知道全世界有13个根域名(前几天新闻说添加了几个根服务器,想了解的可以自行百度)。运营商从根服务器缓存下来,依次缓存。如果非法这进行不存在的域名,服务器发现本地没有该IP和域名的对应关系,所以DNS服务器会递归的向上查询,直到查询到根DNS服务器(查询到根服务器发现没有该ip和域名的映射关系,此时DNS服务可能已经超时)。

猜你喜欢

转载自blog.csdn.net/qq_34796981/article/details/79226223