这些功能会保护我免受XSS和SQL注入吗?

时间:2013-05-13 05:25:37

标签: php mysql sql mysqli xss

我有这个问题;

  

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

我正在处理变量$_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

3 个答案:

答案 0 :(得分:1)

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

对于SQL注入,HTMLpurifier无法正确转义简单的',这足以从SQL字符串文字中突破。

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

答案 1 :(得分:0)

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

我认为净化器只是通过传递你的输出(你将要回显的东西)来阻止XSS。但是你现在正在做的只是通过它传递你的意见。

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

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

答案 2 :(得分:-2)

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

我会看一个像CodeIgnitor这样的好框架,可以自动处理大部分的xss和sql注入。

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

要回答你的问题,这是xss的良好开端,但是攻击者仍然可以插入sql注入,因为你正在使用的插件没有特别提到反sql注入。