我正在创建一个带有codeigniter的CMS,需要存储一些用html包装的文本。然后,我将从数据库中获取数据并将其回显到我的页面上。做安全意识的最佳方法是什么?
数据示例:
<h2>A fresh approach</h2>
<p>Whether you have queries regarding your</p>
<a href="#">cgoto page</a>
答案 0 :(得分:3)
在保存之前应用XSS过滤器(更好,因为您将保存一次并回显几次)或输出并将内容分配给传递给视图的变量。您可以使用$ this-&gt; security-&gt; xss_clean($ data_retrieved)。
答案 1 :(得分:1)
消毒始终是必要的。
我特别喜欢使用HTML标记的白名单,因此您可以分析即将存储的数据,并简单地清除不在该白名单中的HTML标记。这样,如果您愿意,可以阻止用户插入某些标记,例如<script>
或<object>
,这些标记会产生无法预测或模糊不清的行为。
假设您的某个CMS用户使用了非常愚蠢的密码和某人 否则可以访问应用程序。过滤HTML内容会 防止冒名顶替者插入恶意跨域javascript 收集键盘事件(可能会泄露可能的密码) 登录表格)等。
此外,验证您要存储的HTML总是好的,因为任何无效的HTML最终都会损害您的网站标记,甚至在某些浏览器中破坏您的呈现。
在将数据存储到数据库之前进行检查可能是不够的,因为数据可能会被直接数据库访问损坏,因此在回显内容之前,请执行@RodrigoFerreira所说的内容。