0

我正在完成我的网站,并希望使其非常安全 sql 注入。其中一个主要部分是在任何潜在的用户输入上通过和使用 mysql_real_escape_string() 。

这对大多数事情都很好,我只需要使用“stripslashes”来返回原始内容以显示在页面上。但是,我似乎无法返回回车。

有几个地方用户可能会提交带有回车的片段(消息就是一个例子,例如以“Hi John”开头,然后返回两次到主消息)。我怎样才能解决这个问题?Stripslashes 只是返回带有 rnrn 的消息,这是不好的。

作为一个例子(我试图测试所有可能的输入)。

本文:

Once upon a time there was a guy named "steve" or 'john' or backslash (\)

Then, two lines later, he left.

在 SQL 数据库中是这样保存的:

Once upon a time there was a guy named \"steve\" or \'john\' or backslash (\\)\r\n\r\nThen, two lines later, he left.

并使用 stripslashes 让它像这样(注意我正在执行以下操作以将其打印到 html - :

Once upon a time there was a guy named "steve" or 'john' or backslash (\)rnrnThen, two lines later, he left.

我试过nl2br,但由于某种原因它什么也没做。会喜欢这里的任何想法,非常感谢!

4

1 回答 1

1

有很多事情搞砸了。

  1. mysql_real_escape_string() 与 sql 注入和用户输入无关。
  2. 不应该有无条件的stripslashes,而只是故意的。
  3. 正确使用时,转义不会进入数据库。检索时不需要带斜杠。
  4. 如果数据库中有斜线,则说明您有过多的转义。您的代码添加了两次斜杠,或者您使用的是占位符,这使得转义无用
于 2013-01-25T21:28:31.427 回答