Mysql 在数据库中存储格式化的HTML文本

Mysql 在数据库中存储格式化的HTML文本,mysql,security,web,server-side-scripting,Mysql,Security,Web,Server Side Scripting,我对允许用户在我的网站上“共享”信息感兴趣,比如说类似于公告板的概念。这是我以前从未做过的事情,因为我知道这可能会带来安全问题 我可能会使用ColdFusion作为脚本语言。我也熟悉PHP,但我倾向于CF,因为它内置了RichText控件。数据库后端将是MySql或SQLServer 因此,我的问题归结为:具体的安全问题是什么?我如何筛选用户输入?SQL存储方法是否有任何限制(比如VARCHAR vs BLOB)?我们实际上使用CMS作为网站的主要页面,其核心是使用数据库与系统上的实际文件。因此

我对允许用户在我的网站上“共享”信息感兴趣,比如说类似于公告板的概念。这是我以前从未做过的事情,因为我知道这可能会带来安全问题

我可能会使用ColdFusion作为脚本语言。我也熟悉PHP,但我倾向于CF,因为它内置了RichText控件。数据库后端将是MySql或SQLServer


因此,我的问题归结为:具体的安全问题是什么?我如何筛选用户输入?SQL存储方法是否有任何限制(比如VARCHAR vs BLOB)?

我们实际上使用CMS作为网站的主要页面,其核心是使用数据库与系统上的实际文件。因此,对于我们网站上的大多数内容,我们实际上有从数据库检索的HTML

比如说

blurb.body
等于
”这是一个body段落

然后,我们有时似乎会遇到一个字符编码错误。似乎如果有人将一些文本复制到带有“'”或其他符号的CMS中,没有任何东西会自动将其转换为“'”


但是是的,你应该能够做到。只要确保进入数据库的任何过滤在退出时都正确反转。

HTML对数据库引擎没有任何特殊意义。当然,风险在于,一旦你找回它,无论你用它做什么。我在寻找一些“陷阱”的线索——一旦用户向服务器提交他们的信息,我应该筛选一些特定的东西。我可能会实施一个验证码系统来防范机器人。相关阅读可能会重复。你有什么安全提示吗?比如防止跨站点脚本或其他试图在向最终用户显示信息时引入恶意代码的行为?@MichaelBuckman这些网页功能齐全并且需要脚本吗?如果没有,请停用/删除所有脚本标记。如果有人在文本中包含HTML标记,您如何处理这种情况(例如,在上面的答案中:这是…”?您如何防止他们在答案文本中包含的标签与您自己的格式标签之间产生混淆?您是否避开了他们的HTML实体?我的印象是,4个核心HTML实体始终需要编码,以便区分用户输入的标签与真正的格式标签。例如,请参阅Tiny中的强制编码MCE:。在该位置,它表示:“…基本实体<>&”和“将始终被实体编码到其命名的等价物中。尽管”和“将仅在属性值中编码,<>将仅在文本节点中编码。根据HTML和XML规范,这也是正确的…”