什么是XSS攻击

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

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

php防xssPHPHtml 防止XSS跨站剧本进击 今朝最主流的策略 RESTful API

以Think PHP3.2框架为例

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

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

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

html实体编码后的数据

目前的策略是:

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

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

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

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

方案:

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

将默认的过滤器关掉

将过滤方法默认为空

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

模板中完成:

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

效果:

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

保存的是原始数据

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

详细讲解太长,再大略说一下对付Html编辑器的XSS的处理 该当是另一个办法

缘故原由:

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

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

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

实现:

自定义一个过滤器函数

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

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

结果

数据库中的数据:

输出时:

本文紧张是先容XSS防止机遇,更多干系资料可以联系