系统安全
2021-07-11 19:34:24 2 举报
AI智能生成
系统安全常见面试题
作者其他创作
大纲/内容
XSS攻击
概念
XSS的全称是Cross Site Script,就是跨站点脚本攻击,意思就是说,黑客恶意篡改你的网页的前端代码,在里面注入一些他自己的html+javascript的脚本和代码,然后你比如在访问那个网站的网页的时候,他注入的那些恶意脚本就会运行了
攻击方式
反射型攻击
第一种XSS攻击是反射型攻击,他主要是想办法让你点击一个URL链接,在这个URL链接里就嵌入他自己的恶意脚本,你点击那个URL链接之后,那个URL指向的是黑客自己的服务器上的一段恶意脚本。比如可以获取用户的session、cookie,可以模拟用户的操作去转账等操作
持久型攻击
可以留言评论的功能,存放恶意脚本,当用户打开后浏览到恶意脚本的地方就会运行
解决方案
对html、js标签转义,转义后的字符就不会被执行,如:<script> 转义后 <script>
设置HttpOnly属性为true
通过脚本无法获取cookie信息
CSRF攻击
概念
Cross Site Request Forgery,垮站点请求伪造
攻击方式
利用浏览器上保存的cookie伪装成用户登录的状态,然后去执行一些请求
解决方案
防止cookie被窃取
网站的cookie设置HttpOnly属性,禁止被别人的script脚本窃取,那么别人就无法伪造用户登录请求
随机token
用户请求服务的时候随机生成token隐藏在元素内,并记录下用户的token信息。黑客可手动获取token,但无法通过脚本获取随机token伪造请求
验证码
数字、图片、拼图等
Referer请求头
这个是http请求里有一个referer请求头,带有这个请求的来源,可以验证这个请求是不是从自己的页面里来的,如果是的话才执行,否则就不要执行了
SQL注入攻击
概念
把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令
攻击方式
提交表单数据的时候,添加恶意的SQL命令
网页请求参数添加恶意SQL命令
解决方案
SQL预编译
错误回显自定义的错误页面,不要暴露系统异常信息给用户看
不要动态拼接SQL
数据库的连接不要使用管理员账户,应该为每一个服务连接设定权限
表结构不要暴露给外人
文件上传攻击
攻击方式
上传恶意文件、脚本
解决方案
白名单校验,限制上传文件的类型
ps.不能通过文件后缀名判断,要通过magic number来判断文件的类型
对文件进行一定的压缩,这样可以破坏原来的文件结构,避免文件在服务器执行
DDoS攻击
概念
distributed denial of service,分布式拒绝服务攻击。利用大量的机器进行分布式的海量请求发送,导致网站的服务不可用
攻击方式
利用TCP三次握手的SYN Flood攻击
黑客伪造大量的不同ip地址去发送SYN请求给一台服务器建立TCP连接,每次都是卡在服务器第二次握手返回SYN+ACK,但是黑客是不会最终返回ACK的,所以导致服务器可能为了黑客建立了大量的半连接放在等待列表里,占用了大量的资源,不停的重试,这种攻击会耗尽服务器的资源,而正常的请求就会受到影响
利用DNS查询的DNS Query Flood攻击
攻击DNS服务器。伪造大量不存在的域名,请求到DNS服务器上,导致DNS服务器不可用
利用HTTP发起的CC攻击
通过Http代理服务商请求目标服务器,导致目标服务器不可用
解决方案
可以采购云厂商的安全服务,比如DDoS高防IP,可以把攻击流量都导入到云厂商的高防IP的服务器上去,他们有专业的技术方案和算法来防御
网关服务如何防止网络攻击?
获取请求参数,根据请求参数作一些判断,将恶意的请求过滤掉
流程
检查是否带有XSS攻击脚本
检查是否带有SQL注入脚本
检查请求是否带有随机token参数
检查请求是否带有referer请求头
根据ip地址在redis进行计数,防止DDos攻击
可以限制同一ip一定时间内的访问次数
用户密码
不要使用MD5加密,现在有很多可以直接破解
a. 加盐也不好,如果全部人的盐都一样,很容易破解
b. 每个用户都使用UUID作为盐加密也不好,需要额外存储UUID的值
a. 加盐也不好,如果全部人的盐都一样,很容易破解
b. 每个用户都使用UUID作为盐加密也不好,需要额外存储UUID的值
解决方案
使用Bcypty,专门为加密而设计的算法;代价因子的值越大,BCrypt 哈希的耗时越久,应根据用户容忍时间内,尽可能使用值越大的代价因子
0 条评论
下一页