我正在创建一个CMS与编码器,需要存储一些文本,在html包装。然后,我将从数据库中获取数据并将其回显到我的页面上。有安全意识的最好方法是什么?
数据示例:
<h2>A fresh approach</h2>
<p>Whether you have queries regarding your</p>
<a href="#">cgoto page</a>
在保存之前(更好,因为您将保存一次并回显多次)或在输出时应用XSS过滤器,并将内容分配给传递给视图的变量。您可以使用$this->security->xss_clean($data_retrieve)
卫生处理总是必要的。
我特别喜欢对HTML标签使用白名单,这样你就可以分析你要存储的数据,并简单地删除不在白名单中的HTML标签。这样,如果您愿意,您可以防止用户插入某些标记,如<script>
或<object>
,这些标记具有不可预测的或模糊的行为。
假设您的一个CMS用户使用了一个非常愚蠢的密码,而有人Else获得对应用程序的访问权限。过滤HTML内容防止冒名顶替者插入恶意跨域javascript收集键盘事件(可能会显示可能的密码)登录表单)等
另外,验证你要存储的HTML总是好的,因为任何无效的HTML最终会损害你的网站标记,甚至在某些浏览器中破坏你的渲染。
在将数据存储到数据库之前做检查可能是不够的,因为数据可能会被直接访问数据库所破坏,所以在回显内容之前做@RodrigoFerreira所说的