【问题标题】:Is there a reason why I need to use stripslashes for user submitted data?为什么我需要对用户提交的数据使用stripslashes?
【发布时间】:2011-09-17 23:52:36
【问题描述】:

人们使用 stripslashes 的目的是什么?它通常与 addlashes 一起使用吗?为什么要在用户提交的字符串中去除或添加斜杠?

【问题讨论】:

  • 因为当你从用户那里收到它时,你可能已经逃脱了它
  • 你不应该。这是撤消 magic_quotes 变通方法的变通方法。

标签: php stripslashes


【解决方案1】:

您应该始终清理用户的输入。但不适用于addslashes()...如果您想使用用户的输入组合查询,请使用适当的数据库转义机制(查看mysql_real_escape_string()PDO prepared statements)。

清理用户输入的原因是安全性。了解 SQL injectioncross-site scripting,这是两个最常见的由未经过滤的输入引起的安全问题。

【讨论】:

  • 那么用斜杠清理语句的正确方法是什么?为什么我需要去除斜杠?
  • stripslashes() 不会清理语句...你不需要使用 stripslashes() 除非你有一个包含 \' 序列的字符串并且你想删除反斜杠。
  • 我明白了。因此,当向数据库中插入某些内容时,我会使用 mysql_real_escape_string 进行清理,然后在检索和显示时使用 stripslashes?
  • mysql_real_escape_string() 确保字符串正确传递给查询,因此不会出现任何额外的斜杠。取回字符串时不需要使用stripslashes()。但是,当向用户显示不是您自己编写的任何文本(例如从数据库或从其他用户获得的文本)时,请使用htmlspecialhars()
  • @Cfarm:没有。斜线不会存储在数据库中。这就是转义字符的全部意义所在。一旦他们通过了能理解他们的东西,就会移除一层转义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多