当我使用jqueryui自动完成时,为什么我的网站会提醒“xssvuln”?

我在我的网站上实现了jqueryui自动完成function,但是当我加载该页面时,它会提醒“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); 

我猜这与jQueryUI自动完成没什么关系,但可能表明某人已经攻击了你的网站,尽管是以友好警告的方式。

这可能暗示某人设法在您的数据库中获取某些内容,例如 ,表明您的站点容易受到跨站点脚本注入的攻击。

您可以查看实时页面的源代码,看看xssvuln警报的来源吗? 因为我怀疑这是自动完成,或者至少不是直接的。 如果在您使用自动填充function时发生这种情况,我会检查您在实时系统中搜索的搜索结果,看看它们是否包含一些黑客放入的Javascript,然后将其插入您的页面没有适当的逃避。

例如:如果您的网站允许您的用户添加新内容,并且您只是接受他们键入的任何内容,然后输出它而不进行任何清理工作 – 删除脚本标记,在输出期间使用htmlspecialchars()等函数等。 – 那么你必须意识到你有效地允许互联网上的任何人向你的网站添加代码

黑客将在他们正在探测的网站上快速测试XSS漏洞的方法之一是在网站上找到输入表单,并向其添加脚本代码,以查看它是否通过了未经过清理的通过。 所以他们可能会找到一个评论表,并输入:

  

…进去。 然后,如果他们在网站上查看评论页面而不是在页面上看到文本 (例如我们在Stack Overflow中所做的那样),他们会看到一个Javascript警报,他们知道您的网站容易受到攻击。

所以,我的建议是:

  • 找出警报的来源。 有可能是数据库中用户提交的内容。
  • 阅读跨站点脚本。
  • 针对这种Javascript注入保护您的输入和输出。
  • 如有必要,清理现有攻击的数据库。

有人在您的网站上发现了一个漏洞,并且足够慷慨地向您指出。

看起来您的数据库有一个条目:

  

在其中,由于您的某个查询而返回,并显示在您的页面中。

发现这种情况并不是好消息。 您的应用程序应该检查用户输入的所有数据是否没有标签之类的东西,这样就不会发生这样的事情。 同样,每当您在页面上显示数据库中的数据时,运行检查数据的函数也是值得的,因为您永远不会太确定。

要解决这个问题,首先我会在您的实际页面上点击查看源,并找到该脚本的位置。 一旦你知道了,就可以弄清楚代码中检索脚本的位置,并将其从数据库中删除。

但请不要离开它。 这位黑客强调了您网站中的一个重要漏洞,即有人可以轻松利用这个漏洞来制作更具破坏性的内容,而不是提出警报消息。

基本上,每当您将数据库中的文本显示给用户时,请务必将其包装在以下函数中:

 htmlspecialchars($yourstring); 

这不是百分之百的万无一失,但会大大降低您网站上成功进行xss攻击的可能性。