[英]Trying to create a DOM based XSS example
我试图了解有关XSS预防的更多信息,并且这样做了,写了一些我认为可以允许XSS的非常简单的JavaScript
<label id="searchLbl" for="search">Search</label>
<input id="search" autocomplete="off"/>
<div id="results"></div>
<script>
document.getElementById('search').addEventListener('keypress', function(e) {
var code = e.keyCode || e.which;
if (code === 13) {
document.getElementById('results').innerHTML = document.getElementById('search').value;
}
});
</script>
对于将我输入的内容输入到结果div并将其显示在结果div中,此代码可以很好地工作。 但是,如果我尝试输入:
<script>alert("Failed");</script>
Chrome(v31)和Firefox(v25.0.1)均拒绝将div的innerHTML设置为该值。 似乎其中包含<字符的任何字符串都会在该字符的第一个实例处被截断。
如我所料,使用jQuery代替JavaScript失败。
$('#results').html($('#search').val());
我想念什么?
将<script>
标记中的JavaScript代码注入DOM不会导致代码被执行。 内联<script>
标记仅在页面加载时执行。
<
字符不会被截断。 您可以看到,如果尝试注入HTML,例如<b>test</b>
如果要使用<script>
标记执行XSS,则必须执行类似的操作,例如使用查询字符串参数中的HTML向页面发出请求,然后使用诸如PHP的服务器端语言将其回显到页面上。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.