计算机网络(五)网络攻击
DNS劫持是什么?
当我们访问网站的时候,实际上是会先进行域名解析得到网站服务器的IP地址,然后才进行后续的访问。DNS劫持利用了这个过程中的漏洞,攻击者在DNS服务器上算改DNS解析结果,将域名解析到攻击者控制的恶意服务器上,这时候我们访问的域名就被重定向到恶意网站上。
解决办法:手动更换公共DNS服务器,绕过被劫特的DNS服务器。
DNS污染是什么?
DNS污染就是得到了一个虚假的结果,攻击者监听DNS查询,一旦发现查询的域名与自己是匹配的,就把自己伪装成目标域名服务器,然后返回虚假的结果给用户,这样用户域名解析的结果就是错误的,无法和正确的目标服务器IP进行通信。
与DNS劫持:
dns劫持影响会比较大一点,可能所有的dns解析都是错误的
dns污染一般是针对某个特殊的网站进行污染,因为他是监听目标ip
简述DDOS攻击原理,如何防范它
DDOS(Distributed Denial of Service)攻击就是用大量的僵尸计算机对服务器发送大量的请求,让服务器的带宽、CPU和内存耗尽,让服务器超载后,无法再对外提供正常的服务。
DDOS攻击大体有,攻击应用层的方式比如有DNS洪水攻击,攻击传输层的方式比如有SYN洪水攻击、UDP洪水攻击。 我觉得可以通过这几个方面防御DDOS攻击:
- 限制单个IP地址的请求频率,并且对异常流量的IP地址,拉黑名单,配置防火墙规则,阻止恶意流量请求;
- 增加用户验证机制,使用验证码、人脸识别等方式,增加用户验证的难度,减少恶意请求的影响;
- 花钱买可靠的DDoS防护服务提供商,他们具备强大的网络基础设施和专业的防护技术,能够识别和过滤掉恶意流量,确保正常的服务运行。
什么是XSS攻击?如何防止
XSS攻击叫跨站点脚本攻击,攻击方式是攻击者在一些可以评论或者发帖的网站,发布一些恶意脚本代码,然后被服务端保存了,后面访问的网站的时候,浏览器会执行了该恶意脚本,这样攻击者就可以窃取用户的敏感信息了。要防止XSS攻击的话,可以通过这些方式:
- 输入验证和过滤:过滤一些特殊的字符,比如javascript脚本中的<>进行转移<>再进行存储,这样就能有效的进行XSS攻击的预防
- 使用HTTP-only Cookie:将敏感信息存储在HTTP-only Cookier中,限制JavaScript的访问权限,防止恶意脚本窃取用户的Cookie信息。
HttpOnly是一个设置在HTTPcookie中的标记,用于增强cookie的安全性。当服务器向客户端设置了一个HttpOnlycookie后,这个cookie将只能通过HTTP协议进行访问,而不能通过JavaScript脚本来访问
什么是CSRF攻击?如何防止
CSRF叫跨站点请求伪造攻击,攻击形式是,用户先登录银行A网站,这时候就获得了A网站的Cookie,然后不小心访问了一个恶意B网站,B网站会让用户向银行A网站发起一个转账请求,由于用户端有了银行A网站的Cookie,这时候有可能就会转账成功,造成并非本人意愿的操作结果。
防御CSRF攻击的话,可以有这些方式:
- 同源检测:在服务器端对请求进行同源检测,只接受来自同一域名下的请求。这可以通过检查请求头中的Referer字段或者Origin字段来实现;
- 使用验证码:对于敏感操作,要求用户输入验证码进行验证,以防止自动化脚本发起的恶意请求;
- 使用CSRF令牌:在用户执行敏感操作时,要求用户提交一个CSRF令牌。该令牌是一个随机生成的字符串,存储在用户的会话中,并且在每个请求中都要验证该令牌的有效性。攻击者无法伪造正确的CSF令牌,从而防止CSRF攻击。
什么是SQL注入攻击?如何防止
SQL注入攻击是攻击者在HTTP请求中注入恶意SQL语句,让服务端构造执行SQL语句时,恶意的SQL被一起构造了,然后在数据库中执行,这样就可能对数据库造成全量数据拉取、删除、更新等敏感的操作。
预防SQL注入攻击,可以通过这几个方式:
- 使用参数化查询或预编译语句:使用参数化查询或预编译语句来构建和执行SQL查询。这样可以将用户输入的数据作为参数传递给查询,而不是将其直接拼接到SQL语句中,参数化查询可以防止恶意代码的注入;
- 输入验证和过滤:对用户输入的数据进行验证和过滤,确保只接受合法的输入,可以使用白名单过滤、正则表达式验证或者编码转义等技术来防止恶意代码的注入;
- 最小权限原则:在数据库中为应用程序使用最小权限的数据库账户,这样即使发生SQL注入攻击,攻击者也只能 在该账户的权限范围内进行操作,减少损失。