类似这样的事情
https://example.com/my_account/login?"><script>alert(1347)</script>
当我在浏览器中输入此网址时,它会显示警告。 怎么预防呢?
编辑:这是一个使用Struts框架的java Web应用程序......
答案 0 :(得分:0)
基本上,您必须转义字符串才能阻止XSS。一个很好的指南是:
https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet
您没有提到您正在使用的服务器和/或客户端框架。但实际上,您必须转义用户提供给您的字符串,以对&lt;,&gt;进行编码。 &amp;和其他危险的字符,可以将代码注入你的HTML。大多数Web框架都具有此功能。在java中,使用owasp-esapi-java,它是:
String safe = ESAPI.encoder().encodeForHTML( request.getParameter( "input" ) );
你可以在html中输出safe
。希望有所帮助。如果您使用的是特定的框架(rails,play,django,struts,jsp等),请使用该框架提出另一个关于XSS预防的问题。
答案 1 :(得分:0)
您必须确定从外部接收的内容类型,并在将其发送到任何浏览器之前对其进行适当处理。
如果你考虑它的文字,那么:
如果它是作为HTML中文本的一部分输出的,那么你应该通过用正确的HTML实体替换所有必要的东西来适当地逃避<
和&
如果它作为HTML中属性的一部分输出,则同样适用加至少"
和'
。
如果你认为它是HTML,你需要选择你接受的元素(例如<b>
,<i>
等),并过滤掉其他任何内容。
如何操作取决于您使用的语言/框架。