【发布时间】:2016-03-04 11:34:14
【问题描述】:
我的代码有这个问题,但找不到问题所在,有没有人遇到过类似的问题?
<?php
include("db.php");
if(isset($_POST['submit']))
{
$name=$_POST['namename'];
$job=$_POST['job'];
$message=$_POST['message'];
$insert=mysql_query("insert into commenttable(name,job,message)values('$name','$job','$message')")or die(mysql_error());
header("Location:../home.php");
}
?>
这是在本地主机上运行的
服务器类型:MySQL 服务器版本:5.5.42 - 源码分发
忘了提一下,如果我发表简单的评论,比如“你好”,效果很好,但是当我尝试发表这样的评论时
<INPUT TYPE="IMAGE" SRC="javascript:alert('XSS');">
对于攻击它不起作用,我收到错误消息。 我为小型攻击项目做这个,这就是为什么我需要让它工作。
谢谢!
【问题讨论】:
-
我的猜测是 $name、$job 和/或 $message 中有一个
'。您应该使用参数化查询;或者至少尝试清理输入。 -
为了帮助找到此类问题的根源,首先将查询字符串存储在一个变量中通常很有帮助,然后
echo该变量。此外,您使用的是已弃用的 mysql_ 函数,您应该真正切换到 mysqli_ 或 pdo。 -
那么我的代码应该是什么样子?由于我在 php 编程方面不是很有经验。这是一个小项目,它不会对我将使用的 sql 产生任何影响