我有这个问题;
$ 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
答案 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注入。