对于这个特定项目,我将使用 PHP 5.3 & 带参数化查询的MySQL 和 CKE编辑器。
关于我的情况的一些背景:
网站上的用户不会互相交流。
所有用户都只与我私人交谈(机密信息),其中包含richtext。
我限制了CKE编辑器将用户限制为基本的html,粗体,图像和其他格式。
现在,有两件事:
1.)我还需要某种形式的验证吗?如果用户尝试在富文本格式中输入html或php或任何其他代码,它是否会对我的网站产生任何影响?或者,一旦从数据库中回显,它是否只是作为简单文本输出?
2.)还有什么我应该担心的吗?
我还没有开始这个项目,所以当我到达用户输入部分时,我要求我做好准备。
你建议我在我的情况下做什么?
答案 0 :(得分:1)
1.)我还需要某种形式的验证吗?如果用户尝试输入 html或php或其中的任何其他代码 丰富的文本形式,它可以有任何 可能对我的网站有影响吗?或者它会 只需输出一次简单的文字 它是从数据库中回应的吗?
绝对应该,有很多方法可以使用unicde,hex和更多格式绕过这些方法。
2.)还有什么我应该担心的吗?
你应该担心Cross-Site Scripting(XSS)。您至少需要使用htmlentities
功能。
echo htmlentities($text, ENT_QUOTES, "UTF-8");
可能的解决方案:
您可以使用HTML Purifier:
HTML Purifier符合标准 用PHP编写的HTML过滤器库。 HTML Purifier不仅会删除所有内容 恶意代码(俗称为 XSS )经过全面审核,
它安全但宽容的白名单 还将确保您的文件 符合标准,只有一些东西 可以全面实现 了解W3C的规范。
有用的资源: