web 服务器常见的攻击

生活不会放弃你,但也不会放过你。

 

DDos攻击

DDoS”攻击(distributed denial-of-service attack),有时候也叫“洪水攻击”。

黑客会控制许多“僵尸”计算机,向目标服务器发起大量无效请求。因为服务器无法区分正常用户和黑客,只能“照单全收”,这样就挤占了正常用户所应有的资源。如果黑客的攻击强度很大,就会像“洪水”一样对网站的服务能力造成冲击,耗尽带宽、CPU和内存,导致网站完全无法提供正常服务。
“DDoS”攻击方式比较“简单粗暴”,虽然很有效,但不涉及HTTP协议内部的细节,“技术含量”比较低,不过下面要说的几种手段就不一样了。
网站后台的Web服务经常会提取出HTTP报文里的各种信息,应用于业务,有时会缺乏严格的检查。因为HTTP报文在语义结构上非常松散、灵活,URI里的query字符串、头字段、body数据都可以任意设置,这就带来了安全隐患,给了黑客“代码注入”的可能性。
黑客可以精心编制HTTP请求报文,发送给服务器,服务程序如果没有做防备,就会“上当受骗”,执行黑客设定的代码。

 

SQL注入

“SQL注入”(SQL injection)应该算是最著名的一种“代码注入”攻击了,它利用了服务器字符串拼接形成SQL语句的漏洞,构造出非正常的SQL语句,获取数据库内部的敏感信息。

 

HTTP头注入攻击

它在“Host”“User-Agent”“X-Forwarded-For”等字段里加入了恶意数据或代码,服务端程序如果解析不当,就会执行预设的恶意代码。

 

XSS攻击 - 跨域脚本攻击(Cross Site Scripting)

原理:不需要你做任何的登录认证,它会通过合法的操作(比如在url中输入、在评论框中输入),向你的页面注入脚本(可能是js、hmtl代码块等)

它属于“JS代码注入”,利用JavaScript脚本获取未设防的Cookie。

分类:反射型和存储型

反射型:发出请求时,XSS代码出现在url中,作为输入提交到服务器端,服务器端解析后响应,XSS代码随响应内容一起传回给浏览器,最后浏览器解析执行XSS代码。这个过程像一次反射,所以叫反射型XSS;

存储型:存储型XSS和反射型XSS的差别在于,提交的代码会存储在服务器端(数据库、内存、文件系统等),下次请求时目标页面时不用再提交XSS代码;

防范措施:编码、过滤、校正

  1. 编码:对用户输入的数据进行HTML Entity 编码。把字符转换成 转义字符。Encode的作用是将$var等一些字符进行转化,使得浏览器在最终输出结果上是一样的
  2. 过滤:移除用户输入的和事件相关的属性;
  3. 校正:避免直接对HTML Entity进行解码。使用DOM Parse转换,校正不配对的DOM标签。(DOM Parse:它的作用是把文本解析成DOM结构);

 

CSRF - 跨站请求伪造(Cross-site request forgery)

原理:是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作。

满足条件:

  1. 登录受信任网站A,并在本地生成Cookie;
  2. 在不登出A的情况下,访问危险网站B;

防御方法:cookie设置httpOnly + token验证 + 隐藏令牌 + Referer验证

  1. 将cookie设置为httpOnly;避免攻击者伪造
  2. Token验证:攻击者可以伪造用户的请求,该请求中所有的用户验证信息都存在于cookie中,因此攻击者可以在不知道用户验证信息的情况下直接利用用户的cookie来通过安全验证。在请求中放入攻击者所不能伪造的信息,并且该信总不存在于cookie之中。服务器发送给客户端一个token;客户端提交的表单中带着这个token;如果这个token不合法,那么服务器拒绝这个请求;
  3. 隐藏令牌:把token隐藏在http的head头中;
  4. Referer验证:Referer指的是页面请求来源。意思是,只接受本站的请求,服务器才做响应;如果不是,就拦截。

 

文件上传漏洞

利用网站的允许上传对应的文件,然后在直接访问

对策:限制上传文件的类型和大小,对上传的文件进行严格的验证和过滤。最好将上传的文件保存在非 Web 根目录下,并且确保文件上传目录不允许执行 PHP 脚本

 

会话安全

对策:确保会话管理安全,使用安全的会话存储方式(如使用 HTTPS 进行传输,并将会话 ID 存储在 HttpOnly 和 Secure Cookie 中),并在会话中实施有效的超时策略和用户认证措施

 

安全配置

对策:对 PHP 配置文件进行严格的配置,关闭不必要的 PHP 功能和危险函数,确保只有必要的模块和功能被加载。定期更新 PHP 和相关库的版本以及安全补丁,以防止已知的漏洞被利用。

  

网络防火墙的应用(Web Application Firewall)简称为“WAF”

传统“防火墙”工作在三层或者四层,隔离了外网和内网,使用预设的规则,只允许某些特定IP地址和端口号的数据包通过,拒绝不符合条件的数据流入或流出内网,实质上是一种网络数据过滤设备

 

WAF也是一种“防火墙”,但它工作在七层,看到的不仅是IP地址和端口号,还能看到整个HTTP报文,所以就能够对报文内容做更深入细致的审核,使用更复杂的条件、规则来过滤数据。
说白了,WAF就是一种“HTTP入侵检测和防御系统”。

WAF功能:

  • IP黑名单和白名单,拒绝黑名单上地址的访问,或者只允许白名单上的用户访问;
  • URI黑名单和白名单,与IP黑白名单类似,允许或禁止对某些URI的访问;
  • 防护DDoS攻击,对特定的IP地址限连限速;
  • 过滤请求报文,防御“代码注入”攻击;
  • 过滤响应报文,防御敏感信息外泄;
  • 审计日志,记录所有检测到的入侵操作。

 

posted @ 2022-01-11 08:51  方达达  阅读(41)  评论(0编辑  收藏  举报