来自用户输入的安全漏洞域,而不是SQL语句?

时间:2012-03-21 20:51:56

标签: php security

出于安全原因,需要对哪类用户提交的数据进行清理 - 除了最终在SQL语句中的数据?

例如,我知道(“知道”)

if ( isset($_POST['someVar']) && ("a_value" == $_POST['someVar']) ) {
   print "A";
} else {
   print "B";
}

不会给我带来麻烦;我很确定

print "<table><tr><td>" . $_POST['someVar'] . '</td></tr></table>';

也不会。

我需要在哪些域中清理用户输入(除了SQL语句),为什么?

3 个答案:

答案 0 :(得分:2)

同时保护用户:

  • 输入HTML(用户可以注入恶意JavaScript,或意外地保留未关闭的标签 - 通常最好使用Markdown或类似标签)
  • 输入XML(用户可以使用实体黑客从服务器获取私人文件)
  • 输入可执行代码,例如PHP(用户可以在您的服务器上运行任意代码)
  • 上传文件(由服务器上的特定应用程序处理的文件可能允许缓冲区溢出黑客攻击)

答案 1 :(得分:1)

您可以防范目标环境。如果您正在构建数据库查询,则使用SQL注入保护。如果用户数据进入电子邮件,则使用html&amp;哑剧注射保护。 html目标,html注入保护。

对此没有一个“正确”的答案,除了“使用目标环境的任何保护系统”。

答案 2 :(得分:1)

您应该停止使用古老的mysql_*函数,并了解如何将prepared statementsPDOMySQLi一起使用。 默认情况下可以防止SQL注入。

用于访问MYSQL的mysql_* API函数超过10年。开发人员不再支持deprecating他们的流程已经开始。

您可能容易受到哪些其他形式的攻击无法分辨,因为没有可查看的代码。有很多攻击媒介,这取决于你实际用于你网站的内容。