公告:美国CN2服务器1Gbps带宽 免备案不限内容  立即购买

常见六大Web安全攻防解析_图林云IDC资讯

yun 2 0 条

========================

正文开始



前言
在互联网时代,数据安全与个人隐私受到了前所未有的挑战,各种新奇的攻击技术层出不穷。如何才能更好地保护我们的数据?本文主要侧重于分析几种常见的攻击的类型以及防御的方法。
一、XSS
XSS (Cross-Site Scripting),跨站脚本攻击,因为缩写和 CSS重叠,所以只能叫 XSS。跨站脚本攻击是指通过存在解决方案是加入Anti-CSRF-Token。即发送请求时在HTTP 请求中以参数的形式加入一个随机产生的token,并在服务器建立一个拦截器来验证这个token。服务器读取浏览器当前域cookie中这个token值,会进行校验该请求当中的token和cookie当中的token值是否都存在且相等,才认为这是合法的请求。否则认为这次请求是违法的,拒绝该次服务。

这种方法相比Referer检查要安全很多,token可以在用户登陆后产生并放于session或cookie中,然后在每次请求时服务器把token从session或cookie中拿出,与本次请求中的token 进行比对。由于token的存在,攻击者无法再构造出一个完整的URL实施CSRF攻击。但在处理多个页面共存问题时,当某个页面消耗掉token后,其他页面的表单保存的还是被消耗掉的那个token,其他页面的表单提交时会出现token错误。
4) 验证码
应用程序和用户进行交互过程中,特别是账户交易这种核心步骤,强制用户输入验证码,才能完成最终请求。在通常情况下,验证码够很好地遏制CSRF攻击。但增加验证码降低了用户的体验,网站不能给所有的操作都加上验证码。所以只能将验证码作为一种辅助手段,在关键业务点设置验证码。
三、点击劫持
点击劫持是一种视觉欺骗的攻击手段。攻击者将需要攻击的网站通过 iframe 嵌套的方式嵌入自己的网页中,并将 iframe 设置为透明,在页面中透出一个按钮诱导用户点击。
1. 特点隐蔽性较高,骗取用户操作"UI-覆盖攻击"利用iframe或者其它标签的属性2. 点击劫持的原理
用户在登陆 A 网站的系统后,被攻击者诱惑打开第三方网站,而第三方网站通过 iframe 引入了 A 网站的页面内容,用户在第三方网站中点击某个按钮(被装饰的按钮),实际上是点击了 A 网站的按钮。 接下来我们举个例子:我在优酷发布了很多视频,想让更多的人关注它,就可以通过点击劫持来实现
<pre ></pre>iframe{width:1440px;height:900px;position:absolute;top:-0px;left:-0px;z-index:2;-moz-opacity:0;opacity:0;filter:alpha(opacity=0);}button{position:absolute;top:270px;left:1150px;z-index:1;width:90px;height:40px;}</style>......<button>点击脱衣</button><imgsrc="http://pic1.win4000.com/wallpaper/2018-03-19/5aaf2bf0122d2.jpg";><iframesrc="http://i.youku.com/u/UMjA0NTg4Njcy";scrolling="no"></iframe>
操作系统的。OS命令注入攻击指通过Web应用,执行非法的操作系统命令达到攻击的目的。只要在能调用Shell函数的地方就有存在被攻击的风险。倘若调用Shell时存在疏漏,就可以执行插入的非法命令。

命令注入攻击可以向Shell发送命令,让Windows或Linux操作系统的命令行启动程序。也就是说,通过命令注入攻击可执行操作系统上安装着的各种程序。
1.原理

=========================
图林云美国CN2 G口带宽不限流量免备案不限内容服务器




=========================
图林云美国CN2 G口带宽不限流量免备案不限内容服务器

黑客构造命令提交给web应用程序,web应用程序提取黑客构造的命令,拼接到被执行的命令中,因黑客注入的命令打破了原有命令结构,导致web应用执行了额外的命令,最后web应用程序将执行的结果输出到响应页面中。

我们通过一个例子来说明其原理,假如需要实现一个需求:用户提交一些内容到服务器,然后在服务器执行一些系统命令去返回一个结果给用户
<pre ></pre>//以Node.js为例,假如在接口中需要从github下载用户指定的repoconstexec=require('mz/child_process').exec;letparams={/用户输入的参数/};exec(gitclone${params.repo}/some/path);
如果params.repo传入的是https://github.com/admin/admin.github.io.git确实能从指定的 git repo 上下载到想要的代码。 但是如果params.repo传入的是https://github.com/xx/xx.git && rm -rf /* &&恰好你的服务是用 root 权限起的就糟糕了。
2.如何防御后端对前端提交内容进行规则限制(比如正则表达式)。在调用系统命令前对所有传入参数进行命令行参数转义过滤。不要直接拼接命令语句,借助一些工具做拼接、转义预处理,例如 Node.js 的shell-escape npm

正文结束


发表我的评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址