安全策略之数据与代码分离原则
来源:互联网 发布:大学网络怎么办理 编辑:程序博客网 时间:2024/06/04 19:25
今天是第一天写关于安全策略问题,而不是技术问题,原因我发现一个系统的安全级别的高低与采用怎样的安全策略有着不可分割的关系。如果没有采取好的安全策略,那么很有可能千里之堤,溃于蚁穴。
而数据与代码分析原则主要应用于各种由于注入而引发的安全问题。
而在web安全中,由于注入带来的问题比比皆是,如x-path注入,sql注入,xss等等。这些问题都需要数据与代码分离的原则来设计出真正安全的解决方案。
下面以xss为例,它产生的原因是HTML 注入 或者是JS注入,如下面代码:
<html><head>test</head><body>$var</hody></html>
其中$var
是用户能够控制的变量,那么对于这段代码来说:
<html><head>test</head><body></body></html>
上面的代码就是程序的代码执行片段,而$var
就是程序的用户数据片段。
如果把用户数据片段$var
当成代码片段来执行,解释,就十分可能引发安全问题。
为了证明以上的安全问题,我们来对代码进行一下注入,比如当$var
的值是:
<script src =http://eval></script>
这时候,就破坏了用户数据的完整性。解析这段脚本,并且执行是浏览器。它把用户数据里的<script>
标签当作代码来解释,这显然违背了开发者的本意。
然而安全的策略是什么呢?
根据数据与代码分离的原则,这里要对$var
变量做一个处理。
可以使用一些过滤和编码的手段,对可能造成混淆的代码进行清洗,而这里就是针对<和>等符号进行处理。
此时可能会有另外一种情况,就是这里本来就需要<script>
标签弹出一段文字,比如:“我爱你,李倩”。那怎么办?
那么我们重写安全代码:
<html><head>test</head><body><script>alert(“$var”);</script></body></html>
这样的话,<script>
标签也变成了代码的一部分,用户只能控制$var
变量。也就杜绝了安全问题。这里我们遵守的是用户控制最少代码原则。
本文参考书籍吴翰青的《白帽子讲安全》。
阅读全文
0 0
- 安全策略之数据与代码分离原则
- 逻辑代码与呈现代码分离原则
- 使用 Feed4JUnit 进行数据与代码分离
- 前端架构之表现与数据分离
- 使用 Feed4JUnit 进行数据与代码分离的 Java 单元测试
- 使用 Feed4JUnit 进行数据与代码分离的 Java 单元测试
- 界面与代码分离
- webpack之代码分离
- 表现与数据分离
- mysql读写分离之代码分析与设计(2)
- javascript之Promise:异步请求代码与结果处理分离
- 面向对象设计之接口分离原则
- 模版与代码分离技术
- js表现与数据分离
- 多种服务器数据安全策略
- 表示代码与逻辑代码分离
- 基于 JUnit 使用 Feed4JUnit 实现数据与代码分离的测试
- javaweb代码和数据分离思考
- jqLite API参考
- Android自定义View——风车
- linux系统管理
- android自定义View学习5--绘制顺序
- React Native与WebView的交互
- 安全策略之数据与代码分离原则
- 5.7.20版MYSQL从安装到坑爹
- 数据可视化matplotlib(03) 绘制决策树
- 农夫过河问题C++递归实现
- 第四节 WebGL中的图形变换:旋转、平移和缩放
- 2017 ICPC 青岛重现
- 机器学习笔记之R语言基础篇4
- 232. Implement Queue using Stacks
- 更新Android Studio3.0的错误记录