关于Web安全,我们最早听到最多的就是SQL注入。例如用户在系统登录界面输入用户名和密码,提交以后,后端直接拿到数据就拼接SQL语句去查询数据库。如果在输入时进行了恶意的SQL拼装,那么最后生成的SQL就有问题,黑客就可以从数据库中拖出关键信息。

我们可以通过在后端用PDO扩展的方式访问数据库和对用户输入数据进行多重验证的方式来避免SQL注入。本文先不做重点来讨论。

而现在前端我们遇到的web安全问题比较典型的有XSS攻击和CSRF攻击这两种。本次主要来说说对于这两种攻击,先解释其实现原理还有我们都有哪些方法可以来应对。

一、XSS(Cross-site Scripting, 跨站脚本攻击)

 避免与CSS重名,所以简写成XSS了。原理就是通过发布文章、发布评论等方式,将一段恶意的JS代码输入进去。然后别人再看这篇文章、评论时,之前注入的这段恶意JS代码就执行了。JS代码一旦执行就跟网页原有的JS有同样的权限,可以获取cookie等。

解决办法有四个:

1.CSP(Content-Security-Policy)

  内容安全策略是http协议中协议头的一个字段,也可以通过html的meta标签进行控制。只要在返回的http头中定义:

'Content-type':'text/html',
'Content-Security-Policy':'default-src http: https:'
  那么返回的html文件就只能通过http和https外链加载js脚本的方式来执行js代码,而不能执行内联的js代码。这样就防止了恶意内联js代码的执行。此外这个标签还可以设置加载哪些域名下的js文件等,更多信息请查阅 MDN CSP文档

2.对cookie设置http-only

可以对cookie设置http-only来禁止通过JS访问cookie,减少XSS攻击。

3.对用户输入的内容进行escape验证

目前已经有一些npm库例如xss-escape,通过把有XSS攻击危险的字符转换成html实体字符,再放到后端存储,下次在前端渲染的时候,浏览器就不会把实体字符当做脚本来执行了,而是当成实体编码解码之后进行显示。

4.后端对有XSS嫌疑的内容进行过滤

  目前已经有一些npm库例如xss-escape,通过把有XSS攻击危险的字符转换成html实体字符,再放到后端存储,下次在web前端渲染的时候,浏览器就不会把实体字符当做脚本来执行了,而是当成实体编码解码之后进行显示。

二、CSRF(Cross-site request forgery,跨站请求伪造)

 CSRF是借用了当前操作者的身份来偷偷完成了某个请求操作,而不是为了拿到用户信息。所以这两种攻击都是以Cross-site开始,可以一起来记忆。其原理是利用了浏览器再访问某个特定域名时会一直带着这个域名的cookie,那么如果用户访问了某个不安全的网站,网页中有一段js命令执行了一个第三方网站的请求,如果用户之前登录过这个第三方网站的话,黑客就可以利用用户的身份来请求这个第三方网站,完成一些私密的操作。

所以当前在涉及现金交易是都是需要输入密码或者指纹验证,防止第三方伪造请求。

敏感的接口使用POST请求而不是GET请求也能够一定程度预防CSRF。

还有就是对cookie设置same-site属性,规定浏览器不能在跨域请求中携带Cookie,来减少CSRF攻击。

Web安全常见问题及解决方法的更多相关文章

  1. NHibernate常见问题及解决方法

    NHibernate常见问题及解决方法 曾经学过NHibernate的,但是自从工作到现在快一年了却从未用到过,近来要巩固一下却发现忘记了许多,一个"in expected: <end ...

  2. C#用ado.net访问EXCEL的常见问题及解决方法

    C#用ado.net访问EXCEL的常见问题及解决方法,除了像sql server,access常见的数据库,其实Excel文件也可以做为数据库访问. ado.net访问excel的实例: OleDb ...

  3. Nacos 常见问题及解决方法

    Nacos 开源至今已有一年,在这一年里,得到了很多用户的支持和反馈.在与社区的交流中,我们发现有一些问题出现的频率比较高,为了能够让用户更快的解决问题,我们总结了这篇常见问题及解决方法,这篇文章后续 ...

  4. ASP.NET 4.0尚未在 Web 服务器上注册 解决方法

    使用VS2010创建web应用程序时出现如下提示ASP.NET 4.0尚未在 Web 服务器上注册.为了使网站正确运行,可能需要手动将 Web 服务器配置为使用 ASP.NET 4.0,按 F1 可了 ...

  5. 安装scrapy框架的常见问题及其解决方法

    下面小编讲一下自己在windows10安装及配置Scrapy中遇到的一些坑及其解决的方法,现在总结如下,希望对大家有所帮助. 常见问题一:pip版本需要升级 如果你的pip版本比较老,可能在安装的过程 ...

  6. python&django 常见问题及解决方法

    0.python-dev安装(ubuntu) apt-get install  python-dev 1.Open(filename,mode) 报错实例: f = open('d:\Users\16 ...

  7. IIS_常见问题及解决方法

    配置错误 在唯一密钥属性“value”设置为“default.aspx”时,无法添加类型为“add”的重复集合项 配置文件 \\*******\web\web.config web.config中 & ...

  8. AppFuse 3常见问题与解决方法

    非常长一段时间没做SSH项目了.近期抽出时间看了一下升级到3.x的appfuse,对新版本号使用过程中出现的一些问题进行了排查.汇总例如以下.以备后用.本文原文出处: http://blog.csdn ...

  9. python网络爬虫(1)——安装scrapy框架的常见问题及其解决方法

    Scrapy是为了爬取网站数据而编写的一款应用框架,出名,强大.所谓的框架其实就是一个集成了相应的功能且具有很强通用性的项目模板. 其实在Linux和 Mac安装,就简单的pip命令即可: pip i ...

随机推荐

  1. 学术Essay写作简单且稳定的架构解析

    学术essay写作(academic writing),无论是论文还是专著,间架要稳固,才有可读性,才有说服力. 稳,有几个应然特征:部块(parts)关联紧密:部块不外生枝叶:部块之间没有杂质干扰. ...

  2. css选择器优先级排序

    浏览器默认属性 < 继承自父元素的属性 < 通配符选择器 < 标签选择器 < 类选择器 < 结构伪类选择器 < id选择器 < 行内样式 < !impo ...

  3. sqlplus 登陆使用

    select * from dept; input order by dname;  追加文本命令  del  n  删除语句 celar buffer ; 清除缓冲区的命令 conn sys as ...

  4. (3)LoraWAN:链路控制、SF BW CR

    三.Introduction on LoRaWAN options 本文件描述了一种用于可为移动的或固定在一个固定位置的电池供电的终端设备而优化的LoRaWAN™网络协议.LORA™是一个由Semte ...

  5. 注意重写类的equals()方法

    注意在java中在比较引用类型时==和原生的equals()方法比较的都是看它们否是同一个对象(说的更直白一点就是他们在内存的位置是否是一样的),但我们在真实世界中关注的往往只是其中的某个属性是否相等 ...

  6. 关于Tomcat部署项目的点点滴滴

    在给客户部署环境时,我们不可能想开发一样,在编辑软件部署一下tomcat就可以正常运行.我们也应该清楚java的运行机制**“先编译,后解释”**的原则.(如下图)![图片描述][1]那么在Tomca ...

  7. Linux打印变量、环境配置、别名和文件删除操作

    一.打印命令 1.echo打印命令 a.打印环境变量 echo $Path b.打印Path命令目录 which,比如:which ls表示打印的是Path目录中第一定义的全局变量的目录中命令. 二. ...

  8. Python @函数装饰器及用法

    1.函数装饰器的工作原理 函数装饰器的工作原理是怎样的呢?假设用 funA() 函数装饰器去装饰 funB() 函数,如下所示: #funA 作为装饰器函数 def funA(fn): #... fn ...

  9. python 中常见的异常类型汇总

    异常名称 描述 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception 常规错误的基类 ...

  10. pytorch max和clamp

    torch.max() torch.max(a):数组a的最大值 torch.max(a, dim=1):多维数组沿维度1方向上的最大值,若a为二维数组,则为每行的最大值(此时是对每行的每列值比较取最 ...