第三篇伴学笔记~ 今天学习了web安全方面的知识,之前从来没有考虑过这方面,学习感觉收获很大,以后项目开发会注重考虑这方面,这些web攻击真的很巧妙,要小心为上,以下是我的梳理总结:
Web安全
一、XSS
Cross Site Scripting:跨站脚本攻击
攻击者通过向页面注入恶意脚本实现攻击——造成的结果:1、盗取用户cookie信息,然后利用这些信息盗取用户的账号,发送非法恶意邮件等 2、盗取用户敏感信息,比如监听用户键盘输入,盗取账户名,密码,银行卡号等 3、控制用户的浏览器弹出广告下载,恶意软件 4、攻击其他用户:注入恶意脚本在论坛中发布恶意评论或者窃取其他用户的cookie信息
(1)存储型XSS攻击——存在数据库
攻击者将恶意脚本代码存储到Web应用程序的数据库中,然后在其他用户访问这个Web应用程序时,将恶意脚本代码注入到页面中,从而实现攻击。
一般场景:网站将评论不做任何过滤就注入页面,而攻击者在网页输入框中输入恶意脚本代码,从而实现攻击,因为评论会保存在数据库中,在其他用户访问页面时也会执行代码从而受到大范围攻击
比如:<div>${content}<div>
然后content="<script>恶意脚本</script>"
(2)反射型XSS攻击
场景:攻击者了解一个网站的服务器直接将url中的params不做处理设置为html内容,然后伪造了一个url连接,将包含恶意脚本的连接通过钓鱼邮件等发送给受害者,诱导他们点击链接,有时恶意脚本使用document.cookie执行获取用户cookie值发送给黑客服务器
(3)DOM-based xss攻击
与反射型相似,只是反射型是服务器将恶意脚本注入html,而基于dom是浏览器注入
(4)Mutation-based xss攻击
利用浏览器渲染dom特性进行差别攻击,不同浏览器会有差别
例子:对title属性没有防御,在title中直接将标签闭合以及利用img的onerror插入恶意脚本
二、CSRF
跨站伪造请求
例子:用户登录了银行网站,此时攻击者诱导用户访问一个恶意网站,这个恶意网站可以通过在img的src上构造一个对银行网站的转账请求,等img图片一加载就发送请求,如果银行网站没有对 CSRF 进行防范,就可能会执行这个转账请求,导致用户的资金被非法转移。
或者是一个a标签链接
三、injection注入
在sql中注入恶意语句使用命令对数据库进行修改
四、Dos消耗
短时间内,来自大量僵尸设备的请求流量,服务器不能及时完成全部请求,导致请求堆积,进而雪崩效应,无法响应新的请求
五、中间人攻击
基于传输层的攻击
发生原因:1、明文传输,通讯内容不止浏览器和对方能了解,第三方能获取 2、信息篡改不可知 3、对方身份没验证
六、常用防御
1、将输入输出内容进行过滤
比如用正则表达式过滤掉非字母,数字,空格的字符
function filterInput(input) {
const filteredInput = input.replace(/[^\w\s]/gi, '');
return filteredInput;
}
const userInput = "<script>alert('Hello World!');</script>";
const filteredInput = filterInput(userInput);
console.log(filteredInput); // output: alertHello World