正如其他人指出的那样,#2是正确的答案。将其保留为“原始”,直到需要它为止,然后适当地逃避。
为了详细说明原因(我将重复/总结其他文章),让我们将场景1推至逻辑极限。
当有人输入“ ' OR 1=1 <other sql injection> --
”时会发生什么。现在也许您决定因为使用sql而应该为sql编码(也许因为没有使用参数化语句)。因此,现在您必须混合(或决定)sql和HTML编码。
突然,您的老板决定他也想要XML输出。现在,要保持模式一致,您还需要对此进行编码。
下一个CSV-哦,不!如果文本中有引号和逗号怎么办?更多转义!
嘿-一个好的交互式AJAX界面怎么样?现在您可能想开始将JSON发送回浏览器,因此现在{,[等。都需要考虑在内。帮助!!
显然,按给定存储数据(当然要受域约束),并 根据您的输出进行适当的编码。
我希望这个答案不要太光顾。归功于其他受访者。