web面试中常见的问题
1 谈谈你对web安全的理解
回答侧重点 1 sql注入 2 xss攻击
这两个都是用户在输入的时候输入了特殊字符,第一个sql注入可以理解成用户在输入框输入了sql语句,这样在后台就可能会执行用户输入的sql语句
xss攻击是用户输入了script 和js代码 比如<script>document.cookie</script>,这样回答导致在别的客户端或者管理者审核的时候执行这段js代码导致信息泄露
2 如何预防
核心,任何用户输入的都是不安全的,都必须验证
比如用户输入< 转成:< 等 后端sql语句查询不要使用拼接等
下面是安全的面试题和答案
![](https://img.haomeiwen.com/i12905187/7e715e951e21e503.png)
像服务器请求json数据,不受同源策略限制。 ajax是否受遵循同源策略? ajax全名是Asynchronous JavaScript and XML ,异步的javascript和XML技术。遵循同源策略,但是可以通过jsonp等进行规避。 json注入如何利用? xss 浏览器策略 同源策略,内容安全策略(CSP), Cookie安全策略(httponly, Secure, Path) 如何判断sqli注入,有哪些方法? 添加单引号,双引号,order by, sleep,benchmark,运算符,修改数据类型,报错注入语句测试 为什么有的时候没有错误回显,用php举例 php的配置文件php.ini进行了修改,display_errors = On 修改为 display_errors = off时候就没有报错提示。 在php脚本开头添加error_reporting(0); 也可以达到关闭报错的作用。 宽字符注入的原理?如何利用宽字符注入漏洞,payload如何构造? 通俗讲,gbk,big5等编码占了两个字节,sql语句进后端后对单引号等进行了转义,转义\为%5C,当前面的%xx与%5C能结合成两个字节的字符时候,就可以使后面的单引号逃逸,从而造成注入。比较常见的gbk,%df' => %df%5c%27 => 運' 。已经可以单引号了,剩下的就和普通注入差不多了。 你都了解哪些sql的bypass技巧? 这种太多了,网上一搜一大把。主要还是看目标站点的过滤和防护,常见bypass可以是/**/替换空格,/*!00000union*/ 等于union,或者利用前端过滤,添加尖括号。大小写什么的都太常见了,如果过滤了函数或者关键字,可以尝试其他能达到效果的同等函数,关键字比如or 1=1可以用||1替换,或者用运算符比如/,%达到相同的效果。总之,还是看要求。 CRLF注入的原理? CRLF是回车+换行的简称。碰得比较少,基本没挖到过这种洞,简而言之一般是可以通过提交恶意数据里面包含回车,换行来达到控制服务器响应头的效果。碰到过潜在的CRLF都是提交回车和换行之后就500了。CRLF的利用可以是XSS,恶意重定向location,还有set-cookie. XSS发生的场景? 个人理解是对用户提交数据为进行安全的过滤然后直接输入到页面当中,造成js代码的执行。至于具体场景,有输出的地方就有可能被xss的风险。 xss蠕虫? 不太了解。 如果给你一个XSS盲打漏洞,但是返回来的信息显示,他的后台在内网,并且只能内网访问,如何利用这个xss? github有一些现成的xss扫描内网端口的脚本,可以参考利用,再根据探测出来的信息进一步利用,比如开了redis等,再就是利用漏洞去getshell. php.ini可以设置哪些安全特性? 关闭报错,设置open_basedir,禁用危险函数,打开gpc。有具体的文章介绍安全配置这一块,属于运维的工作范围。 php里面有哪些可以不让错误的显示的方法? 除了上面的,还可以在执行语句前面添加@ php的%00截断的原理? 存在于5.3.4版本下,一般利用在文件上传时文件名的截断,或者在对文件进行操作时候都有可能存在00阶段的情况。 如filename=test.php%00.txt 会被截断成test.php,00后面的被忽略。系统在对文件名读取时候,如果遇到0x00,就会认为读取已经结束了。 webshell的检测,有哪些方法? 个人知道的大体上分为静态检测和动态检测两种。静态检测比如查找危险函数,如eval,system等。动态检测是检测脚本运行时要执行的动作,比如文件操作,socket操作等。具体方法可以是通过D盾或者其他查杀软件进行查杀,现在也有基于机器学习的webshell识别。 CSRF漏洞的本质是什么? CSRF即跨站请求伪造,以受害者的身份向服务器发送一个请求。本质上个人觉得是服务端在执行一些敏感操作时候对提交操作的用户的身份校检不到位。 防御CSRF都有哪些方法,JAVA是如何防御CSRF漏洞的,token一定有用吗? 防御CSRF一般是加上referer和csrf_token. jAVA不太懂。具体可以参考这篇CSRF攻击的CSRF攻击的应对之道 HTML5有哪些新的安全特性? H5新增了不少标签,在绕过xss防御方面多了不少选择。还有就是新增了本地存储,localstorage 和session storage,可以通过xss修改本地存储达到类似一个存储xss的效果。
1解释一下同源策略?
如果两个页面的协议,端口和域名相同,则可认为是同源。
2 如何设置可以解决跨域请求?jsonp是做什么的?
主域相同时跨域,可以像上面那样设置document.domain.
主域不同时,可以通过jsonp,websocket,在服务端设置CORS进行跨域请求。H5新增window.postMessage方法解决跨域请求。
通过像服务器请求json数据,不受同源策略限制。
3 ajax是否受遵循同源策略?
ajax全名是Asynchronous JavaScript and XML ,异步的javascript和XML技术。遵循同源策略,但是可以通过jsonp等进行规避。
4 浏览器策略
同源策略,内容安全策略(CSP), Cookie安全策略(httponly, Secure, Path)
5 如何判断sqli注入,有哪些方法?
添加单引号,双引号,order by, sleep,benchmark,运算符,修改数据类型,报错注入语句测试
CRLF注入的原理?
CRLF是回车+换行的简称。碰得比较少,基本没挖到过这种洞,简而言之一般是可以通过提交恶意数据里面包含回车,换行来达到控制服务器响应头的效果。碰到过潜在的CRLF都是提交回车和换行之后就500了。CRLF的利用可以是XSS,恶意重定向location,还有set-cookie.
6 XSS发生的场景?
个人理解是对用户提交数据为进行安全的过滤然后直接输入到页面当中,造成js代码的执行。至于具体场景,有输出的地方就有可能被xss的风险。
7 CSRF漏洞的本质是什么
CSRF即跨站请求伪造,以受害者的身份向服务器发送一个请求。本质上个人觉得是服务端在执行一些敏感操作时候对提交操作的用户的身份校检不到位。
8 HTML5有哪些新的安全特性?
H5新增了不少标签,在绕过xss防御方面多了不少选择。还有就是新增了本地存储,localstorage 和session storage,可以通过xss修改本地存储达到类似一个存储xss的效果。
网友评论