如何清理字符串以避免SQL注入和最常见的攻击类型?(在PHP中)

Fel*_*ida 2 php security user-input sql-injection filter

有没有办法以尽可能少的代码为SQL注入和最常见的攻击形式过滤字符串?

在我的脚本中我使用以下内容,我想知道它是否相当安全以及是否有其他人有建议:

$cleanName    = htmlspecialchars(addslashes($dirtyName));
Run Code Online (Sandbox Code Playgroud)

看看我如何过滤html字符和引号和双引号.

注意:我正在使用addslashes()而不是mysql_real_escape_string()因为我不想将我正在使用的数据库硬编码到我的代码中.

这个可以吗?

提前致谢

Ker*_* SB 5

可能不是......你需要单独为每个目的逃避原始文本,你将使用它:

  • 对于GET请求,请使用urlencode.
  • 对于HTML输出,请使用htmlentities.
  • 要作为命令通过system,请使用escapeshellcmd.
  • 通过以下方式将参数传递给命令system:use escapeshellargs.
  • 对于传递数据库参数:use mysql_real_escape_string.

对于神奇地逃避文本,没有"通用"解决方案.在内部保留原始文本,并为适当的目的将其转义.