我正在使用Java MVC做一个Web项目,它有一个搜索框。我从这个文本框中获取搜索字符串,然后调用Javascript搜索脚本方法。它又调用Web服务进行搜索。现在,如果我搜索像:
这样的脚本<script>alert("helllooooo")<\script >
然后它会警告helloooo以及使用服务进行搜索。在这种情况下,如何避免评估脚本。
答案 0 :(得分:0)
在将输入发送到您的网络服务或搜索之前,您必须清理输入。
通过清理它意味着从输入字符串中转义所有HTML和Javascript标记。
检查Apache StringEscapeUtils课程,了解escapeJava
,escapeJavascript
等方法。您必须在网络服务端执行此操作。
如果你想在javascript端本身发生这种情况,你将不得不编写一个Javascript函数,它将显式地转义HTML和JS特殊字符(特别是标记)
答案 1 :(得分:0)
此处有一个跨站点脚本(XSS)漏洞。您需要进行服务器端转义以防止利用。这个question有几种可能的解决方案。您也可以参考OWASP XSS Cheat Sheet。
客户端转义不足,因为攻击者在执行攻击时会绕过客户端代码。
答案 2 :(得分:-1)
您可以替换&lt;和&gt;像这样:
var html = document.getElementById("searchboxid").value;
html = html.replace(/</g, "<").replace(/>/g, ">");