-1

我有这个查询;

$sql = "INSERT INTO statusups (pid, text) VALUES ('{$_SESSION['sess_id']}', '{$_POST['appendedInputButton']}')";

我正在处理这样的变量$_POST['appendedInputButton']

$_POST['appendedInputButton'] = $purifier->purify($_POST['appendedInputButton']);
$_POST['appendedInputButton'] = strip_tags($_POST['appendedInputButton']);
$_POST['appendedInputButton'] = trim($_POST['appendedInputButton']);

这能保护我免受 XSS 和最终的 SQL 注入吗?我研究了 mysqli 并准备了语句,看起来需要很多代码来做一件简单的事情。如果这可以保护我免受 SQL 注入和 XSS 的侵害,我很想继续使用这种方法,还是应该升级到 mysqli?

函数$purifier->purify来自插件HTMLpurifier

4

3 回答 3

1

不,不会的。HTML 和 SQL 是完全不同的语言,您不能使用单一的魔术函数来处理它们。此外,它取决于插入数据的实际上下文。

至于 SQL 注入,'HTMLpurifier 无法正确转义一个简单的,这足以从 SQL 字符串文字中分离出来。

关于跨站脚本,HTMLpurifier 可能会根据实际情况保护您。

于 2013-05-13T05:38:11.723 回答
0

不会。此解决方案不会保护您免受任何伤害。

我认为 Purifier 只是为了防止 XSS,通过它传递你的输出(你要回显的内容)。但是您现在所做的只是通过它传递您的输入。

而且这里根本没有 SQL 注入保护。

如果您使用已弃用的 mysql_query() 函数,则需要采取$_POST['appendedInputButton'] = mysql_real_escape_string($_POST['appendedInputButton']);措施防止 SQL 注入。

于 2013-05-13T08:05:41.800 回答
-2

跨站点脚本攻击允许攻击者执行托管在您网页上另一台服务器上的代码。我想说剥离标签并通过净化器运行它是一个好的开始,只要您没有将攻击者无法使用内联 JavaScript 链接或嵌入代码的方式列入白名单。

我会看一个很好的框架,比如 CodeIgnitor,它可以自动处理大部分 xss 和 sql 注入。

请记住,虽然它可能看起来有很多代码,但您应该能够编写某种类型的函数(或使用现有框架),这将使未来的项目更快地编写代码并且更安全。

要回答您的问题,这对于 xss 来说是一个好的开始,但攻击者可能仍然能够插入 sql 注入,因为您使用的插件没有特别提到反 sql 注入。

于 2013-05-13T05:37:33.463 回答