我正在创建一个具有codeigniter的CMS,需要存储一些在html中包装的文本。然后我将从数据库中获取数据,并将其回显到我的页面上。在有安全意识的情况下,最好的方法是什么?
数据示例:
<h2>A fresh approach</h2>
<p>Whether you have queries regarding your</p>
<a href="#">cgoto page</a>发布于 2011-10-28 21:58:08
清理始终是必需的。
我特别喜欢将白名单用于HTML标记,因此您可以分析要存储的数据,然后简单地删除不在该白名单中的HTML标记。这样,如果您愿意,您可以防止用户插入具有不可预测或模糊行为的特定标签,如<script>或<object>。
假设您的一个内容管理系统用户使用了一个非常愚蠢的密码,而其他人通过该应用程序获得了访问权限。过滤HTML内容可以防止冒名顶替者插入恶意的跨域javascript来收集键盘事件(这可能会暴露登录表单中可能的密码)等。
此外,验证将要存储的HTML总是很好的,因为任何无效的HTML最终都会损害您的网站标记,甚至会破坏您在某些浏览器中的呈现。
在数据库中存储数据之前进行检查可能是不够的,因为直接访问数据库可能会破坏数据,所以在回显内容之前,请按照@RodrigoFerreira的说法进行。
发布于 2011-10-28 21:43:18
在保存之前(更好,因为您将保存一次并回显多次)或在输出时应用XSS过滤器,并将内容分配给传递给视图的变量。您可以使用$this->security->xss($data_retrieved)。
https://stackoverflow.com/questions/7930015
复制相似问题