我的大多数问题都是理论性的,因为我认为“伟大的思想家讨论想法”和职员讨论语法。将用户数据存储在数据库中无需转义
不管怎么说..所以这里的情况是
我有采取从user.BUT没有该输入的输入查询(全部)使用的系统。这个输入包含很多代码片段。现在在过去,我逃过了输入,然后将其存储在数据库中。我不使用任何添加和剥离斜线功能排序,而使用它们使用的preg_replace像下面
$data = preg_replace("/\;/", ";", $data);//
$data = preg_replace("/</", "<", $data);
$data = preg_replace("/>/", ">", $data);
$data = preg_replace("/\"/", """,$data);
$data = preg_replace("/\(/", "(", $data);
发生然而下面的问题我自己的程序。
有时软件会错误地转义数据(因为我的软件没有缺陷),我将无法找到实际数据。 不时更新我的转义程序,这意味着不同的输入转义不同。
用户可以选择编辑他的帖子。这意味着我必须向他呈现转义数据(或不转义数据)以防止数据泄漏两次...... 因此,我终于得出结论,我直接从用户保存未转义的数据进入数据库。并在显示之前将其转义(它没有其他目的..在查询中没有用处等)。对于其他任何事情我都有原始数据未更改。
我的问题::
可以取消逃脱数据库中的用户数据仍然是危险的,即使在查询中不使用或显示之前逃脱???
与斜线相等/更好/比换款字符。例如:<到<逃逸不同逃逸..
如果数据正确地转义(我的意思是所有的特殊字符),那么它还可以用于XSS攻击。 SQL注入是没有问题的。
这么简短,但这样一个伟大的答案。 +1 – drew010 2012-07-23 21:02:00
我还会添加“永远不要写你自己的转义函数”。 – Vatev 2012-07-23 21:07:25
ohh ...亚做出这么多的意义..你可以plz指示我去一些地方阅读更多关于...什么是显示编码...什么是存储编码....谢谢 – 2012-07-23 21:27:38