PHP+Html 防止XSS跨站脚本攻击 目前最主流的策略

2022-10-11 20:40:51 134 0
魁首哥

这里主要是介绍下防止XSS的时机判断,让你明白XSS实质应该防止的位置

什么是XSS攻击

它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。

XSS是黑客,恶意用户常用的注入漏洞,也是网站安全要考虑的问题

以Think PHP3.2框架为例

框架为了防止XSS(跨站脚本, cross site script)危害. 用户通过script脚本, 控制web页面的行为. 采用的策略: 在接收到浏览器端数据后, 将数据转换为HTML实体 编码

这是框架的默认策略, 很low, 现在几乎不用该策略

在接收数据时, 就完成实体编码转换. 主要的问题, “数据库中存储的不在是原始数据了. 而是处理过之后的数据”.

html实体编码后的数据

目前的策略是:

在数据输出到页面时, 才进行html实体编码转换.

都是使用HTML实体编码转换, 但是, 时机不同. 合理的策略是输出时. 而不是输入时.

原因: script脚本, 只有在浏览器端运行, 才有执行意义. 存储在数据库中,没有任何危害!

数据库中不知道用户到底真正输入的是什么!

方案:

关闭, 输入时, 自动实体编码处理

将默认的 过滤器 关掉

将过滤方法默认为空

输出时, 对可能发生的注入字段, 进行过滤:

模板中完成:

在需要的字段文章添加过滤

效果:

数据中, 存储的是原始数据, 未转换编码的数据

保存的是原始数据

输出时, 数据为实体编码:

详细讲解太长,再简单说一下对于Html编辑器的XSS的处理 应该是另一个方式

原因:

其他字段, title字段, 输出时, 直接转换为实体标记即可.

但是, 对于描述这种html编辑器的内容. 输出时不能直接转换. 因为 html代码, 对于数据是有意义的.

处理方案: 将内容中的script部分, 转换成实体. 非script部分, 不去处理.

实现:

自定义一个过滤器函数

使用正则替换实现,只对script标签进行处理

定义成一个方法,再需要选择的时候选用该函数

结果

数据库中的数据:

输出时:

本文主要是介绍XSS防止时机,更多相关资料可以联系

收藏
分享
海报
0 条评论
134
上一篇:新手php入门之 Smarty模板简介及使用步骤 二 下一篇:如何安装Tomcat以及简单发布网站教程

本站已关闭游客评论,请登录或者注册后再评论吧~

忘记密码?

图形验证码