当前位置: 首页 > news >正文

住房城乡建设网站移动端的优势

住房城乡建设网站,移动端的优势,襄阳南漳县城乡建设局网站,合肥app开发公司前十名在 View 层,可以解决 XSS 问题。在本书的“跨站脚本攻击”一章中,阐述了“输入检查” 与“输出编码”这两种方法在 XSS 防御效果上的差异。XSS 攻击是在用户的浏览器上执行的, 其形成过程则是在服务器端页面渲染时,注入了恶意的 H…

在 View 层,可以解决 XSS 问题。在本书的“跨站脚本攻击”一章中,阐述了“输入检查” 与“输出编码”这两种方法在 XSS 防御效果上的差异。XSS 攻击是在用户的浏览器上执行的, 其形成过程则是在服务器端页面渲染时,注入了恶意的 HTML 代码导致的。从 MVC 架构来说, 是发生在 View 层,因此使用“输出编码”的防御方法更加合理,这意味着需要针对不同上下 文的 XSS 攻击场景,使用不同的编码方式。

在“跨站脚本攻击”一章中,我们将“输出编码”的防御方法总结为以下几种:  在 HTML 标签中输出变量;  在 HTML 属性中输出变量;  在 script 标签中输出变量;  在事件中输出变量;  在 CSS 中输出变量;  在 URL 中输出变量。

针对不同的情况,使用不同的编码函数。那么现在流行的 MVC 框架是否符合这样的设计 呢?答案是否定的。

在当前流行的 MVC 框架中,View 层常用的技术是使用模板引擎对页面进行渲染,比如在“跨站脚本攻击”一章中所提到的 Django,就使用了 Django Templates 作为模板引擎。模板引 擎本身,可能会提供一些编码方法,比如,在 Django Templates 中,使用 filters 中的 escape 作 为 HtmlEncode 的方法: Hello, {{ name|escape }}!

Django Templates 同时支持 auto-escape,这符合 Secure by Default 原则。现在的 Django Templates,默认是将 auto-escape 开启的,所有的变量都会经过 HtmlEncode 后输出。默认是编 码了 5 个字符:

< is converted to &lt; 
> is converted to &gt; 
' (single quote) is converted to &#39; 
" (double quote) is converted to &quot; 
& is converted to &amp; 

如果要关闭 auto-escape,则需要使用以下方法:

{{ data|safe }}

{% autoescape off %} Hello {{ name }} {% endautoescape %}

为了方便,很多程序员可能会选择关闭 auto-escape。要检查 auto-escape 是否被关闭也很简 单,搜索代码里是否出现上面两种情况即可。

但是正如前文所述,最好的 XSS 防御方案,在不同的场景需要使用不同的编码函数,如 果统一使用这 5 个字符的 HtmlEncode,则很可能会被攻击者绕过。由此看来,这种 auto-escape 的方案,看起来也变得不那么美好了。

再看看非常流行的模板引擎 Velocity,它也提供了类似的机制,但是有所不同的是,Velocity 默认是没有开启 HtmlEncode 的。

在 Velocity 中,可以通过 Event Handler 来进行 HtmlEncode。

eventhandler.referenceinsertion.class = org.apache.velocity.app.event.implement. 
EscapeHtmlReference 
eventhandler.escape.html.match = /msg.*/ 

使用方法如下例,这里同时还加入了一个转义 SQL 语句的 Event Handler。

import org.apache.velocity.app.event.EventCartridge; 
import org.apache.velocity.app.event.ReferenceInsertionEventHandler; 
import org.apache.velocity.app.event.implement.EscapeHtmlReference; 
import org.apache.velocity.app.event.implement.EscapeSqlReference; 
public class Test 
{ public void myTest() { .... /** * Make a cartridge to hold the event handlers */ EventCartridge ec = new EventCartridge(); /* * then register and chain two escape-related handlers */ ec.addEventHandler(new EscapeHtmlReference()); ec.addEventHandler(new EscapeSqlReference()); /* * and then finally let it attach itself to the context */ ec.attachToContext( context ); /* * now merge your template with the context as you normally * do */ .... } } 

但 Velocity 提供的处理机制,与 Django 的 auto-escape 所提供的机制是类似的,都只进行 了 HtmlEncode,而未细分编码使用的具体场景。不过幸运的是,在模板引擎中,可以实现自定 义的编码函数,应用于不同场景。在 Django 中是使用自定义 filters,在 Velocity 中则可以使用 “宏”(velocimacro),比如:

通过自定义的方法,使得 XSS 防御的功能得到完善;同时在模板系统中,搜索不安全的 变量也有了依据,甚至在代码检测工具中,可以自动判断出需要使用哪一种安全的编码方法, 这在安全开发流程中是非常重要的。

在其他的模板引擎中,也可以依据“是否有细分场景使用不同的编码方式”来判断 XSS 的安全方案是否完整。在很多 Web 框架官方文档中推荐的用法,就是存在缺陷的。Web 框架 的开发者在设计安全方案时,有时会缺乏来自安全专家的建议。所以开发者在使用框架时,应 该慎重对待安全问题,不可盲从官方指导文档。

http://www.yayakq.cn/news/550207/

相关文章:

  • 网站推广服务合同模板网站建设基础流程
  • 可以做c 试题的网站浙江省工程建设质量管理协会 网站
  • 招人在哪个网站比较好找有没有专门做图的网站
  • 分销网站建设秀米网站怎么做推文
  • 网站开发 岗位及职责大朗网站建设公司
  • 棋牌网站制作价格深圳百度关键词推广
  • 建立论坛网站wordpress H2标签
  • 咸阳网站建设专业公司哪家好做简历有什么网站
  • 鄂尔多斯教育网站入口蜜雪加盟一般多少钱
  • 天津市建设 中标公示网站wordpress当前分类链接
  • 汽车金融网站怎么做招聘网站怎么做预算
  • 小区媒体网站建设简述网站建设流程
  • 音乐网站怎么做社交的下载源代码建网站
  • 怎么做网上直营店网站河南关键词优化搜索
  • 四川建设厅官方网站文件下载成都网站建设与开发
  • 安全的企业网站开发xampp用wordpress
  • 我和你99谁做的网站成都网站优化
  • 网站怎样做优惠卷公司的网站怎么做推广
  • 中文资源在线官网网站seo的关键词排名怎么做的
  • 一了网站动漫制作技术就业前景
  • 帝国程序如何改网站标题张家口网站建设开发
  • 北京做手机网站哪一个做h5的网站好
  • 公司网站管理维护wordpress 添加h5游戏
  • 深圳 赢客创想网络技术股份有限公司 网站建设网站实名审核
  • 可以做免费推广的网站吗苏州纳米所加工平台
  • 电商网站开发人员人数瑞诺国际做外贸网站好吗
  • 长岭建设局网站网站开发用用什么语言最好
  • 做网站销售的技巧电商公司的网站设计书
  • 建设心理网站wordpress在线代码编辑器
  • 情人节网站源码下载引流推广营销