我正在创建一个页面,其中用户将指定图像的URL.此URL将存储在DB中,然后将返回以显示图像.到目前为止,如果用户不想恶作剧,那就好了.
但现在通过http://ha.ckers.org/xss.html,用户还可以指定一个实际上是脚本的URL.
<IMG SRC=javascript:alert('XSS')>
Run Code Online (Sandbox Code Playgroud)
我在一个页面中试过这个,但这并没有造成任何伤害.[没有显示警报]重点是,我真的需要关心用户指定的内容吗?如果是,那么我需要考虑的案例/场景是什么,以及如何做到这一点?
可能的重复:
在 PHP 站点中避免 xss 攻击的最佳实践是什么
例如:
http://www.mid-day.com/searchresult.php?query=%3Cscript%3Ealert%28%22This%20is%20vulnerable%20for%20XSS%20..%20by%20binny%22%29%3C/script%3E
Run Code Online (Sandbox Code Playgroud)
该网站存在基于XSS DOM的漏洞我想知道导致该漏洞的原因以及如何防范?
我应该使用 php 的 htmentities() 和 pdo 来过滤输入和输出转义,以防止 xss 攻击吗?
在我的J2EE/Java代码的一部分中,我在输出上执行URLEncoding getRequestURI()来清理它以防止XSS攻击,但Fortify SCA认为验证不好.
为什么?
如果要在textareas等输入中使用数据库(在php中)清理值的最佳方法是什么?
例如,在插入数据时,我可以删除标签和引号,并用html字符代码替换它们,然后在插入之前使用mysql_real_escape_string.
在检索该数据时,我需要它在textarea中显示.我怎么能这样做,仍然避免使用XSS?(例如,你可以轻松输入
</textarea><script type='text/javascript'> Malicious Code</script><textarea>
Run Code Online (Sandbox Code Playgroud)
)并导致问题.
谢谢!
我编写了一个微模板实用程序,它使用innerHTML 根据用户输入(纯文本字符串或html 字符串)在网页中注入html 片段。
我主要担心的是恶意脚本注入的风险。脚本可以通过脚本标签或内联事件(例如 img onload、div onmouseover)注入。
有没有办法清理 html 字符串以防止此类注入?另外,还有其他我应该注意的脚本注入方法吗?
我正在使用 tomcat 5.5.36。我用 JSP 构建了一个应用程序。我使用了“toolOwasp Zap 安全工具”来扫描我的应用程序。在报告中我发现了一个与 XSS 相关的问题。我正在使用表单登录用户并通过邮件发送。
在报告中它说跨站点脚本(反射)
参数 - 用户名 攻击 -</span><script>alert(1);</script><span>
证据 -</span><script>alert(1);</script><span>
我正在使用 sesson id 来验证用户。我读过一些关于 XSS 攻击的文档,但找不到合适的解决方案,它可以与给定的 tomcat 版本一起使用。(注意:是否有任何使用 CSRF 令牌的解决方案。)
我想防止我的 web 应用程序中的 XSS 攻击,所以我想在将用户输入的数据保存在数据库中以在另一个 JSP 页面中显示之前对表单中输入的数据进行转义,并且我在两种方法之间犹豫不决:
StringEscapeUtils.escapeHtml(),对于输入REGGAETON / SALSA给我相同的结果,但对于ESAPI.encoder().encodeForHTML()相同的输入,输出将是REGGAETON & #x2f; 莎莎舞
我目前正在尝试保护我的网站免受 Url 中的 XSS 攻击。例如,如果攻击者使用 Firefox,他们可以执行以下操作
myxsssite.com/mypage.aspx?d"><script class="none&>alert(1);</script clas="none&><!--=1
Run Code Online (Sandbox Code Playgroud)
并且脚本将被运行。我已经搜索了几天,似乎找不到有效的解决方案。目前我已经尝试过 MS 的 AntiXSS 库。我认为它不能正常工作,我正在像这样编码整个 url
Mircosoft.Security.Application.Encoder.HtmlEncode(path);
Run Code Online (Sandbox Code Playgroud)
我也尝试了这个类中的所有其他方法,并且在页面加载之前脚本仍在执行。我将 ASP.net 3.5 与 Webforms 一起使用,但无法升级。
我的 Javascript 代码旨在获取一些不受信任的字符串变量并将其呈现在 DOM 中。它将被插入到格式良好的 HTML 中的已知点。当且仅当字符串不可能包含 HTML 元素时,它才会被插入。脚本执行是主要的担忧,但任何类型的可能被利用的注入都值得关注。
如果字符串看起来不安全,我就不能在 DOM 中呈现它。不需要对可能不安全的字符串进行消毒或做任何事情。事实上,我想避免使用库,而更喜欢不需要维护的简单检查。我还看到了向 DOM 添加文本节点的解决方案,但我只想说这对我正在做的事情不起作用。
我认为测试可能像“字符串是否包含 <”一样简单:
function isItSafe(text) { return text.indexOf('<') === -1; }
但也许这太天真了。特别是,当某些漏洞利用依赖于某个浏览器如何响应无效 HTML 时。可以在不使用“<”的情况下创建注入漏洞吗?如果是这样,您认为最低限度的检查需要是什么?