【发布时间】:2015-03-09 20:41:32
【问题描述】:
我有一个 javascript sanitizer,我将 '' 和 '&' 替换为它们各自的字符编码。
str.replace(/[&<>]/g, encoding);
这些经过清理的数据被插入到数据库中,然后呈现为 HTML。
喜欢,
<?php echo $col1 . "\n" $col2 . "\n"; ?>
这个消毒剂能破吗?
【问题讨论】:
-
它是做什么用的?
-
@zerkms 已编辑问题。
-
不清楚:您是否收到了已经转义的 HTML,您想保存而不转义?为什么要在保存之前将其转义?
-
@tadman 我在保存它之前转义,因为我不希望将任何 javascript 输入到数据库中。说像
-
数据库不关心里面有什么,它不会突然运行它。您正在谈论的是一个显示问题,其中来自数据库的任何内容无法信任,因此必须相应地进行转义。您应该关注是否以及何时显示数据而不是持久化数据时的转义。这意味着,如果您的清理规则随着时间的推移发生变化,您将不必翻阅所有旧记录并修复它们。此外,如果您放宽规则,您的旧内容将正确呈现,而不是永久删除内容。
标签: javascript encoding xss