索鸟网

  1. 首页
  2. 面试--web安全的理解

面试--web安全的理解


web前端安全主要会涉及以下几种

xss

xss cross-site scripting跨域脚本攻击

它允许恶意web用户将代码植入到提供给其它用户使用的页面中。其实在web前端方面,可以简单的理解为一种javascript代码注入。

XSS攻击分为三种,分别是:

  1. Reflected XSS(基于反射的XSS攻击)
  2. Stored XSS(基于存储的XSS攻击)
  3. DOM-based or local XSS(基于DOM或本地的XSS攻击)

Reflected XSS(基于反射的XSS攻击)

这种攻击主要依靠 站点服务端 返回脚本,在客户端 触发执行 从而发起Web攻击。
攻击的例子
1、当你在亚马逊 搜索图书的时候 搜不到书的时候显示提交的名称
2、在搜索框搜索内容,填入“<script>alert("handsome boy")</script>”, 点击搜索
3、如果前端页面没有对 返回的数据进行处理 就会直接弹出alert
也就是直接执行了用户在搜索框里边的脚本
4、 进而可以构造获取用户cookies的地址,通过QQ群或者垃圾邮件,
防御这种攻击的两种方法:
1、前端页面显示服务器端返回来的数据的时候 不仅是标签内容需要过滤、转义,就连属性值也都可能需要。让服
务器返回来的非法js脚本 没有办法到达前端的浏览器
2、后端接收请求时,验证请求是否为攻击请求,攻击则屏蔽。

Stored XSS(基于存储的XSS攻击)

这种攻击常见于论坛中 比如说有一个人发表了一篇文章为

今天天气不错啊!<script>alert("handsome boy")</script>

后端没有对文章进行过滤,直接保存文章内容到数据库。每一个读这篇文章的人都会 被弹出alert
防御这种攻击的两种方法:
1、服务器在存储文章的时候对文章的内容要进行过滤。

  1. 当服务端不校验时候,前端要以各种方式过滤里面可能的恶意脚本,例如script标签,将特殊字符转换成HTML编码。
    XSS攻击的特点就是:尽一切办法在目标网站上执行非目标网站上原有的脚本(某篇文章说的)。本地的XSS攻击的示例2其实不算XSS攻击,只是简单流量劫持。前两种XSS攻击是我们开发时候要注意的,而流量劫持的则可以使用HTTPS提高安全性,。

1、避免使用eval New Function等执行字符串的方法 除非确定这个字符串和用户的输入没有关系
2、过滤前端的输入和输出
3、使用cookie的httpOnly属性 加上这个属性的cookie字段 js是无法读取的
4、使用innerHTML document.wirte的数据的时候 如果数据是用户输入的时候 需要对关键字进行过滤与转移

cors Cross-site request forgery跨站请求伪造

网站的一些提交行为被黑客利用 在你访问黑客网站的时候进行的操作的时候 会被操作到其他网站
你在开发一个购买商品的操作
http://localhost:8082/lab/xsr...

<?php
// 从cookie中获取用户名,看似稳妥
$username = $_COOKIE["username"];
$productId = $_GET["pid"];
// 这里进行购买操作
//store_into_database($username, $productId);
?>
<meta charset="utf-8" />
<?php
echo $username . "买入商品:" . $productId;
?>

黑客网站

<!DOCYTPE HTML>
<html>
    <head>
        <meta charset="utf-8" />
    </head>
    <body>
        <img src="http://localhost:8082/lab/xsrflab/submit.php?pid=1" />
    </body>
</html>

当每次有人访问黑客网站的时候 就相当于给你执行了一次提交
防御corf
1、检测http referer 是否是同域名
2、避免登录的session 长时间的存储在客户端中
还有其他的一些攻击
http劫持 饭店的wifi登录了以后可以拿到你的所有的收发的数据 https加密

面对以上的攻击可以

开发时要提防用户产生的内容,要对用户输入的信息进行层层检测
要注意对用户的输出内容进行过滤(进行转义等)
重要的内容记得要加密传输(无论是利用https也好,自己加密也好)
get请求与post请求,要严格遵守规范,不要混用,不要将一些危险的提交使用jsonp完成。
对于URL上携带的信息,要谨慎使用。
心中时刻记着,自己的网站哪里可能有危险。

前端性能

来源地址:https://segmentfault.com/a/1190000011459463 版权归作者所有!

相关教程

  • [面试专题]前端需要知道的web安全知识

    前端需要知道的web安全知识 标签(空格分隔): 未分类 安全 [Doc] Crypto (加密) [Doc] TLS/SSL [Doc] HTTPS [Point] XSS [Point] CSRF [Point] 中间人攻击 [Point] Sql/Nosql 注入攻击 Crypto Node.js 的 crypto 模块封装了诸多的加密功能,
  • web安全基础

    web安全基础 常见的web安全攻击手段有很多,比如SQL注入,XSS,CSRF,HTTP头攻击,cookie攻击,重定向攻击,上传文件攻击等,其中大多数都可以通过三种方法——过滤代理转义(实体化)来解决。 SQL注入 SQL注入方法? 使用工具--SQLmap SQL注入之SQLmap入门 - FreeBuf.COM | 关注黑客与极客 两种类型:常规
  • 十大web安全扫描工具---

    扫描程序可以在帮助造我们造就安全的Web 站点上助一臂之力,也就是说在黑客“黑”你之前, 先测试一下自己系统中的漏洞。我们在此推荐10大Web 漏洞扫描程序,供您参考。 Nikto http://www.xdowns.com/soft/184/Linux/2012/Soft_99498.html 以下是引用片段: 这是一个开源的Web 服务器扫描程序,它可以对We
  • Java Web servlet理解

    前言:按照习惯,首先上个demo。 一个servlet例子: 第一步:java代码: package com.zhoum.intelligentler.servlet; public class DownloadServlet extends HttpServlet{ @Override protected void doGet(HttpServletReque
  • CA数字证书服务的配置、搭建安全的WEB服务器、安全的邮件服务器

    1.什么是数字证书         数字证书在网络上类似于人在社会上持有的***等证件,用来在网络上证明数字证书持有者的身份。数字证书持有者可能是现实社会中的自然人、法人,也可能是网络设备。数字证书可以简单理解为“网络***”,用来在网络上证明自己的身份。2.数字证书上面主要包括那些信息? 
  • [面试专题]Web缓存详解

    Web缓存详解 标签(空格分隔): 缓存 缓存之于性能优化 请求更快:通过将内容缓存在本地浏览器或距离最近的缓存服务器(如CDN),在不影响网站交互的前提下可以大大加快网站加载速度。 降低服务器压力:在大量用户并发请求的情况下,服务器的性能受到限制,此时将一些静态资源放置在网络的多个节点,可以起到均衡负载的作用,降低服务器的压力。 缓存方式 服务
  • web安全之sql注入问题

    1.sql攻击是什么?就是输入参数未经过滤然后直接拼接到sql语句中解析执行然后达到预想之外的的一种行为 例如where id=-1 or 1=1;这种情况下 where条件永远为真 2.如何寻找sql注入? 不直接拼接客户端发来的参数 ----1.数字注入 ----2.字符串注入(重点)sql语句的注释 "# 这样就可以做到 #后面的语句全部失效 "-
  • 【阅读笔记】Web安全深度剖析

    1.深入HTTP请求流程