我在我的网站上实现了jqueryui autocomplete,但是当我加载该页面时,它会提醒“xssvuln”。但当我试图在localhost上运行我的网站时,没有问题。你能帮帮我解决这个问题吗?而且,我在ipage上运行我的网站。
这是我自动完成的js。
$.ajax({
type: 'post',
url: 'autocompleteCourse.php',
dataType: 'json',
success: function(data){
var availableCourse = data;
$( "#course" ).autocomplete({
source: availableCourse,
messages: {
noResults: '',
results: function() {}
}
});
}
});
这是我自动完成的php文件。
include'../utility/sqlcon.php';
$query = mysql_query("select * from autocomplete where input = 'course'") or die (mysql_error());
while($q=mysql_fetch_array($query))
{
$courseOptions[] = $q['autoComplete'];
}
echo json_encode($courseOptions);
答案 0 :(得分:3)
我猜这与jQueryUI自动完成没什么关系,但可能表明某人已经攻击了你的网站,尽管是以友好警告的方式。
这可能暗示某人设法将某些内容放入您的数据库,例如<script>alert('xssvuln');</script>
,表明您的网站容易被cross-site scripting注入。
您可以查看实时页面的源代码,看看xssvuln警报的来源吗?因为我怀疑这是自动完成,或者至少不是直接的。如果在您使用自动填充功能时发生这种情况,我会检查您在实时系统中搜索的搜索结果,看看它们是否包含黑客放入的一些Javascript,然后您将其插入到您的页面中没有适当的逃避。
例如:如果您的网站允许您的用户添加新内容,并且您只是接受他们输入的内容,然后输出它而不进行任何清理工作 - 删除脚本标记,使用htmlspecialchars()
等功能在输出等等 - 然后你必须意识到你有效地允许互联网上的任何人向你的网站添加代码。
黑客在他们正在探测的网站上快速测试XSS漏洞的方法之一是在网站上找到输入表单,并向其添加脚本代码,以查看它是否通过了未经过清理的方式。因此,他们可能会找到一个评论表单,并输入:
<script>alert('xssvuln');</script>
...进入它。然后,如果他们在网站上查看评论页面,而不是在页面上看到文本 <script>alert('xssvuln');</script>
(例如我们在Stack Overflow中所做的那样),他们会看到一个Javascript警报,他们知道你的网站容易受到攻击。
所以,我的建议:
答案 1 :(得分:1)
有人在您的网站上发现了一个漏洞,并且已经足够慷慨地向您指出。
您的数据库看起来像是一个条目:
<script>alert('xssvuln');</script>
在其中,由于您的某个查询而返回,并显示在您的网页中。
发现这种情况并不是好消息。您的应用程序应该确实检查用户输入的所有数据是否没有标签之类的东西,这样就不会发生这样的事情。同样,每当您在页面上显示数据库中的数据时,运行检查数据的函数也是值得的,因为您永远不会太确定。
要解决此问题,首先我会在您的实际页面上点击查看源,并找到该脚本的位置。一旦你知道了,就可以弄清楚代码在哪里检索脚本,并将其从数据库中删除。
但请不要离开它。这个黑客强调了你网站中的一个重要漏洞,有人可以轻易利用这个漏洞做更多有害的事情而不是提出警报信息。
基本上,每当您将数据库中的文本显示给用户时,请务必将其包装在以下函数中:
htmlspecialchars($yourstring);
这不是100%万无一失,但会大大降低您网站上成功进行xss攻击的可能性。