常见网络安全

115 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第9天,点击查看活动详情

作为一个前端开发人员,了解一些网络攻防的知识能让我们编写的代码更有保障,只有明白了问题出现的原因我们才能更好的进行避免。

xss攻击

跨站脚本攻击(Cross Site Scripting)缩写为CSS,由于和层叠样式的css相重名,所以缩写改叫xss攻击。利用网页开发时留下的漏洞(web应用程序对用户的输入过滤不足),巧妙的将恶意的代码注入到网页中,使用户浏览器加载并执行恶意制造的代码,以达到攻击的效果。这恶意的代码通常是JS代码,但实际上也可以是JAVA、VBS、ActiveX、Flash或者是普通的HTML。(浏览器不会判断,只要是符合解析,那么就会执行恶意的代码)。可能存在XSS的地方:微博、留言板、聊天室等收集用户输入的地方都可能遭受XSS攻击的风险。只要你对用户的输入没有严格过滤。防范xss攻击的最好方式就是永远不要相信用户的输入。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
<input id="myInput" type="text">
<div id="userInput">展示区</div>
</body>
<script>
  document.getElementById("myInput").addEventListener("change",function(even){
    console.log(even.target.value);
    document.getElementById("userInput").innerHTML=even.target.value;
  })
</script>
</html>

image.png

可以看到上面简单的代码就模拟了xss攻击,由于我们没有对用户的输入进行校验,用户输入了可执行的js代码,然后后台如果没有校验的话将我们的留言保存到了我们的数据库中,下次重新再加载页面的时候,这插入的js代码就会被执行。想象一下,如果这js代码不是简单的alert而是获取你的cookie、token等验证身份的东西,那么盗用者就可以冒充你的身份了。

那么如何进行防范呢?首先关键的一点就是永远不要相信用户的输入,对用的输入进行检查,其次对于身份验证的东西进行保护。如cookie可以加上httpOnly这样就不会被js操作。

CSRF攻击

CSRF( Cross-Site Request Forgery ) 为跨站请求伪造,它是一种针对Web应用程序的攻击方式,攻击者利用CSRF漏洞伪装成受信任用户的请求访问受攻击的网站。其主要特点就是在用户还没有正常退出回话的时候,诱导用户点击恶意链接,然后通过恶意代码要求以正常用户的身份去访问正常的网站,这样用户在不知道的情况下将而已代码发送到了信任网站。

image.png

CSRF的攻击过程与XSS攻击过程类似,不同之处在于,XSS是盗取用户信息伪装成用户执行恶意活动,而CSRF则是通过用户向网站发起攻击。

出现的原因主要是验证的漏洞,如cookie的处理方面我们可以考虑设置在同域下的cookie才能正常携带,即禁止第三方网站携带cookie。

其他

当然还有写是后端更应该注意的攻击,如SQL注入,通过编码者编码不规范,出现SQL语句的拼穿语句,攻击者给SQL语句后加上类似1==1的语句这种永真式,那么SQL语句无论是啥都会被进行执行,那么数据库可能就会被删除,非法读取等等。