欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

mysql - 关于php数据处理流程

程序员文章站 2024-04-05 19:42:06
...
一个问题一直没有弄清楚,关于数据处理。

用户提交信息--1-入库--2-前台调出

为了防止xss注入和对html的处理,这个流程是如何操作的?

回复内容:

一个问题一直没有弄清楚,关于数据处理。

用户提交信息--1-入库--2-前台调出

为了防止xss注入和对html的处理,这个流程是如何操作的?

不知道你说的是 XSS 还是 XSS 与 注入。一般来讲注入指的是 SQL 的注入。

你困惑的原因是对 XSS 了解不多,简单点说,我在你的网站上发表内容(比如发表评论),这段内容包含 Javascript 代码,而贵站没有对用户发表的内容进行过滤,这就造成了我之后的人打开这一页的时候,会运行我发布的 Javascript 代码,如果我是个合格的程序员,基本可以利用这段代码干任何事情了。比如挂马,更甚点,如果贵站是个社交网站,我可以事先对转发、关注、点赞、分享之类的动作进行抓包,分析 POST 或 GET 格式,然后在 Javascript 中进行相应操作, 例如先关注我,然后分享我的评论给你的好友,你可以看到这是恶性循环,是个引爆点,理论上这可以影响到一个社交网站绝大多数用户。 这是所谓的 XSS。

早年流传一句话,不要信任任何用户,话不中听,但这是极为有道理的,你不知道你的访客到底是何方神圣,抱有怎样目的。从他输入信息,到他的信息以任何形式被展示出来(评论、主题帖、站内信,只要涉及他输入的地方全部都算)这个过程内,你必须得对此内容进行处理,检验其中是否含有危险内容,一般都在入库之前处理,可以连同有可能存在的 SQL 注入一并处理了。至于 SQL 另一个类别,也是用户输入(包含$_GET,$_POST了),有可能危害到你数据库的安全,有经验的人会猜测你程序里使用的 SQL 语句(比如你的内容地址是http://yourdomain.com/?id=23,显然你程序中走位就是SELECT id,name FROM xxx WHERE id = 23),他会在网址后面加东西,最简单的是 or 1 = 1,使你任何语句查询结果都为真,这要是用户登录部分,危害太大。详细的你自己找资料吧。

我见到许多 PHP 项目用的 XSS 过滤是开源库:http://htmlpurifier.org/

简单来说,在入库前要对用户的输入进行检查,通常是防 SQL 注入。然后在页面显示信息时要进行恰当的转义,这个通常是防 XSS.

相关标签: php mysql