mysql - 关于php数据处理流程
用户提交信息--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.