我的脚本在php / mysql中,我启用了验证码,我想知道他怎么能做这样的事情
一个简单的表单,在另一个函数中,它检查$ vars并验证它们然后插入数据库
我确定他正在使用机器人做这样的事情
我真的很困惑
这是我验证和插入表格
的功能 function submitStory($name, $address, $subject, $story, $storyext, $topic, $alanguage,$tags) {
$subject = check_words(check_html(addslashes($subject), "nohtml"));
$story = check_words(addslashes($story), "nohtml");
$storyext = check_words(addslashes($storyext), "nohtml");
$result = $db->sql_query("INSERT INTO ".$prefix."_stories
(sid,catid,aid,title,time,hometext,bodytext,newsref,newsreflink,comments,counter,topic,informant,notes,ihome,alanguage,acomm,hotnews,haspoll,pollID,associated,tags,approved,section)
VALUES
(NULL, '$catid', '', '$subject', now(), '$story', '$storyext', '','', '0', '0', '$topic', '$name', '', '', '$alanguage', '', '', '0', '0', '','$tag_ids','2','news')");
mysql_error();
include ('header.php');
echo "<font class=\"content\"><b>"._THANKSSUB."</b><br><br>"
.""._SUBTEXT.""
."<br>"._WEHAVESUB." $waiting "._WAITING."";
include ('footer.php');
}
答案 0 :(得分:3)
@Mac,
虽然你在少数变量中添加了addslashes,但其余的都暴露在sql注入中。请对所有变量应用mysql_real_escape_string
函数,并在列表中包含以下内容:
$catid, $topic, $name, $alanguage, $tag_ids
我建议你强烈地申请mysql_real_escape_string
,但如果你真的很急,想要快速修复就可以立即尝试,而不必怀疑mysql_real_escape_string
究竟是什么以及它做了什么,然后至少将addslashes
应用于function submitStory
中我上面提到的变量。
您可以阅读有关mysql_real_escape_string here
的更多信息希望这会有所帮助。请告诉我们。
答案 1 :(得分:2)
最有可能是SQL injection attack。您应该立即使您的站点脱机,并且在您修复漏洞并仔细检查整个数据库以查找Zeus dropper等恶意软件之前不要重新启用它。
如果您的网站允许用户生成的内容,您还应该仔细过滤它以查找恶意HTML标记,javascript等。
答案 2 :(得分:0)
一旦有人通过验证码,他们可以发布任何数量的故事吗? (即,现在认为该会议是安全的)。这只能证明他们是人类的第一次尝试......
有人注册后是否有发布限制?
您是否为每个注册用户的会话和表单生成了ID,因此他们的凭据无法在XSS中使用?
如果1为真,或者2和3都为假,则他们绝对可以运行脚本来垃圾邮件。