WEB开发常见的安全漏洞和解决思路:华为云服务器登陆失败

時間:2023-12-27 20:51:42 作者:华为云服务器登陆失败 熱度:华为云服务器登陆失败
华为云服务器登陆失败描述::

跟着互联网的普及,网络安全变得越来越重要。程序员需要把握根本的eb安全知识,防患于未然,下面列举一些常见的安全破绽,以及对应的防备解决方案。

一、SQL注入

SQL注入是对照常见的网络攻击方式之一,主要是通过把SQL号召插入到Web表单递交或输入域名或页面请愿的查询字符串,实现无帐号登录,甚至篡改数据库。

1、SQL注入的危害

  • 数据库信息泄漏:数据库中寄存的用户的隐私信息的泄露。

  • 网页篡改:通过操纵数据库对特定网页进行篡改。

  • 数据库被恶意操纵:数据库服务器被攻击

  • 服务器被远程管理,被安装后门

  • 删除和改动数据库信息

    • 2、SQL注入最常见的方式有:

      1)布尔型盲注

      在互联网刚刚兴起的时候,该想法经常会被用来恶意登录一些安全性不高的网站:

      SELECT*FROMusersWHEREuser_name=zhangsanandpassord=mima;

      假如用户在密码框里填入 or1=1or1=,那么上面的SQL 就变成了

      SELECT*FROMusersWHEREuser_name=zhangsanandpassord=or1=1or1=;

      这样就可以绕过密码校验,登录为任意用户了

      2)报错型注入

      一个常见的语句为 :

      SELECT*FROMusersWHERE=1ANDuser_name=zhangsan

      通过改动 zhangsan 这个 入参,很容易将SQL拼接为

      SELECT*FROMusersWHERE=1ANDuser_name=zhangsanAND(SELECT1FROM(SELECTCOUNT(*),CONCAT(USER(),FLOOR(RAND(0)*2))XFROMinformation_schematablesGROUPBYX)a)AND1=1;

      这个语句会报一个固定的过错

      显然,你用来登录Mysql的用户名就暴漏了

      3)union注入

      这种对照好懂得,就是在原来的select 语句上通过union的方式,增加新的信息,将SQL拼接为

      SELECT*FROMusersWHERE=1ANDuser_name=zhangsanunionselect*fromother_table

      这种方式可以查询到你的任意表的信息,严重的话可能会被脱库。

      4)SQL堆叠查询

      这种跟 union 相似,可以将SQL拼接为

      SELECT*FROMusersWHERE=1ANDuser_name=zhangsan;select*fromother_table

      更为严重的是,分号后面的语句时可以随便写的,假如时拼上 drop 或者 delete 之类的语句 就可以会造成删库的风险了。

      SQL注入的攻击最常见,阴碍也最大,SQL注入的本性是将 用户本来应该传入的 “数据” 变成了 程序 会执行的“代码”,从根源上解决这个疑问,就是不要让 数据变成代码,最好的方式就是预编译了。

      3、防范SQL注入的方式

      通常场合下,SQL注入的位置包括:

      (1)表单提交,主要是POST请愿,也包括GET请愿;

      (2)URL参数提交,主要为GET请愿参数;

      (3)Cookie参数提交;

      (4)HTTP请愿头部的一些可改动的值,比如Referer、User_Agent等;

      SQL注入时eb开发中最常见也是危害性最大的安全破绽,SQL注入攻击可能会导致 服务器故障,数据泄漏,数据被恶意删除等等严重后果。

      二、CSRF破绽

      CSRF跨站点请愿仿造(Cross—Site Request Forgery),跟XSS攻击一样,存在庞大的危害性,攻击者盗用了你的地位,以你的地位来调用后台接口,对服务器来说这个请愿是彻底正当的,但是实际上,这个接口的调用,你却并不知情。

      简朴模仿一下整个过程如下:

      1 张三打开阅读器,拜访受信任网站A,输入用户名和密码请愿登录网站A;网站A 有一个接口为adeletedata?=100 ,那么正常场合下,由于张三已经登录了网站A,那么他是可以直接拜访这个接口的。

      2 张三在同一阅读器中,打开一个TAB页拜访网站B;网站B 上有这么一段代码察看,这样的话 假如张三在B网站上点击了 察看 这个 按钮,那么实际上 ,他就删除了 在 A网站上的 数据了。

      当然范例里是个 deletedata ,而实际上这个接口的含义也可能是查询了某个数据,甚至时转了一笔钱等等,那么阴碍就非常大了。

      要防治CSRF 破绽,一般有两种想法:

      1验证 HTTP Referer 字段

      HTTP Referer是header的一部门,当阅读器向eb服务器发送请愿的时候,一般会带上Referer,通知服务器该网页是从哪个页面链接过来的,服务器因此可以牟取一些信息用于处置,以上示例中,假如A网站做了这个校验,那么他就可以辨别出 deletedata 这个请愿时来自于 B网站而不是A网站自身,就可以谢绝掉这个请愿了。

      这种方式最常见也最简朴,但是却并不是最安全的,终究Referer是依靠阅读器的,每个阅读器对 Referer的实现可能不一样,对于部门阅读器,Referer 甚至是可以篡改的 。另外,因为网站会纪实 Referer信息 ,在用户对隐私的疑问越来越敏感的今日,可能会带来隐私风险疑问。

      2在请愿中增加 token 并验证;

      CSRF攻击之所以能够胜利,是由于攻击者可以仿造用户的请愿,是由于黑客应用已知信息以及cookie中的未知信息 来发起了攻击,那么,假如我们添加一个不能仿造的并且不在cookie中的未知信息,那么攻击就无法发生了。因此,我们可以在HTTP请愿中以参数的格式参加一个随机发生的token,并在服务端进行token校验,假如没有token或者token的值不正确,我们就以为这是一个非法的请愿,谢绝掉他就可以了。

      三、SSRF破绽

      SSRF是一种由攻击者组成形成由服务端发起请愿的一个安全破绽。一般场合下,SSRF攻击的目的是从外网无法拜访的内部系统。由于请愿本身是由服务端发起的,因此可以通过这个请愿调用到服务端的一些内部接口,探测内网的信息,攻击内网的服务等等。

      可能会发生SSRF 破绽的场所主要有:

      1能够对外发起网络请愿的场所

      2请愿远程服务器资源的场所

      3一些邮件系统,文件上传,文件处置系统,在线处置工具等等

      举一个简朴的示例:

      如果 A网站有一个性能,就是用来下载一些第三方的数据的,URL 为 adonloadurl=bbjpg,

      执行逻辑上其实就是简朴的 get -Objpg bbjpg 这样的。明面上,这个性能很简朴,就是将一些网站 ,比如 b 上的 图片给下载下来保留。看起来没啥疑问

      但是,假如这里的参数被人应用 改成了 adonloadurl=127001deletedata?=1 ,那么当你执行 eget -Objpg 的时候,就等于是执行了内部接口 deletedata了,这样就会对内部系统造成攻击。更深层次的,假如是用的其他一些协议,比如 donloadurl 为 fileetcpassd ,或者dict1270016379info 之类的,就可以直接拿到服务器上的一些数据信息了。

      防治SSRF破绽的思路主要就是制止对不安全的资源进行下载和拜访:

      1禁用不需要的协议,仅仅许可和s请愿,并制止30x跳转,可以防范相似于file, gopher, ftp 等引起的疑问。

      2服务端的服务都需要做拜访授权,避免root启动,制止非正常用户拜访服务。

      3设置URL白名单,限制内网IP的请愿,过滤输入信息,严格判断输入的URL是不是安全的URL

      四、XSS破绽

      1XSS简介

      跨站脚本(cross site script)简称为XSS,是一种常常显露在eb利用中的计算机安全破绽,也是eb中最主流的攻击方式。

      XSS是指恶意攻击者应用网站没有对用户提交数据进行转义处置或者过滤缺陷的瑕疵,进而添加一些代码,嵌入到eb页面中去,使别的用户拜访都会执行相应的嵌入代码。

      2XSS攻击的危害

      1、窃取用户资料,比如:登录帐号、网银帐号等

      2、应用用户地位,读取、篡改、添加、删除企业敏感数据等

      3、盗窃企业重要的具有商务价值的资料

      4、非法转账

      5、强制发送电子邮件

      6、网站挂马

      7、管理受害者机器向其它网站发起攻击

      3防范XSS解决方案

      XSS的根源主要是没彻底过滤客户端提交的数据 ,所以重点是要过滤用户提交的信息。

      • 将重要的cookie标志为 only, 这样的话js 中的documentcookie语句就不能获取到cookie了

      • 只许可用户输入我们期望的数据。 例如:age用户年纪只许可用户输入数字,而数字之外的字符都过滤掉。

      • 对数据进行Html Encode 处置: 用户将数据提交上来的时候进行HTML编码,将相应的符号转换为实体名称再进行下一步的处置。

      • 过滤或移除不同凡响的Html标签, 例如 script, iframe , for , for , quot for

      • 过滤js事件的标签。例如 onclick=, onfocus 等等。

        • 五、越权破绽

          越权破绽也是常见的eb破绽,一般分为分为程度越权和垂直越权两种,程度越权指的是攻击者尝试拜访与他拥有雷同权限的用户的资源,比如A本来是只能看A自己的用资料的,但是当他把URL 为getInfo?=a 改动为 getInfo?=b 后 就可以看到b的数据了。垂直越权是指普通的用户获取到了比他级别更高的用户的权限,假如普通用户获取到了控制员的权限。

          1程度越权

          程度越权里,一个最常见的示例就是攻击者通过遍历 来进行信息的盗取。比如某个页面如下:

          这个页面在显示列表时,就通过后台进行过滤,只显示了当前登录者的工作列表

          工作名

          察看详情

          工作1

          getInfo?=1

          工作2

          getInfo?=2

          工作3

          getInfo?=3

          列表里的数据,攻击者时没法仿造的,但是这里有一个察看详情的链接,假如这个 getInfo 接口本身没有做好鉴权的话,那么攻击者就可以通过遍历 的方式来查到到了所有用户的详情数据了,严重的甚至可能会被脱库。

          2垂直越权

          垂直越权的常见范例就是菜单的呈现,比如控制员可以看到所有的菜单,包括“系统控制” 这个菜单,而其他用户是看不到 “系统控制” 这个菜单的,但是,假如某个用户通过不同凡响道路,获取到“系统控制” 这个菜单的URL ,他直接通过这个URL 来进行拜访,发明时可以拜访,这个就是发生了垂直越权的破绽了。

          要避免越权破绽,主要还是需要从逻辑进步行完善,以下有几点建议:

          1所有的接口都要做到两层鉴权,包括接口本身的鉴权以及接口对应的数据的鉴权

          2鉴权,服务端对请愿的数据和当前用户地位做校验

          3所有的鉴权都要在后台做,不能依赖前端来鉴权

          4对于会暴漏给用户的数据,尽量避免通过自增的方式来实现,最好有自己的生成器,让黑客没法通过遍历的方式来获取数据

          5对于特别敏感的操纵,可以进行二次权限校验

          网络破绽扫描器对目的系统进行破绽检测时,首先探测目的系统的存活主机,对存活主机进行端口扫描,确认系统听开放的端口,同时依据协议指纹专业辨别出主机的操纵系统类型。然后扫描器对开放的端口进行网络服务类型的辨别,确认其提供的网络服务。

          破绽扫描器依据目的系统的操纵系统平台和提供的网络服务,调用破绽资料库中已知的各种破绽进行逐一检测,通过对探测响应数据包的解析判断是否存在破绽。

站長聲明:以上關於【WEB开发常见的安全漏洞和解决思路-华为云服务器登陆失败】的內容是由各互聯網用戶貢獻並自行上傳的,我們新聞網站並不擁有所有權的故也不會承擔相關法律責任。如您發現具有涉嫌版權及其它版權的內容,歡迎發送至:1@qq.com 進行相關的舉報,本站人員會在2~3個工作日內親自聯繫您,一經查實我們將立刻刪除相關的涉嫌侵權內容。