为原生JS创建的input元素赋值是否存在XSS攻击风险?
使用原生JavaScript创建input元素并赋值是否会引发XSS漏洞?
答案是:不会。
原因分析:
当你通过Element.value为input元素赋值时,浏览器会将传入的内容视为纯文本处理,不会解析其中的HTML标签或JavaScript代码。哪怕你的data变量里包含<script>alert('xss')</script>这类恶意代码片段,也只会被当作普通字符串显示在输入框中,完全不会被执行。
结合你的示例代码来看:
你的代码里存在一个小笔误(变量名inn写成了in),修正后的核心赋值逻辑如下:
var inn = document.createElement('input'); // 添加到父元素或body中... var data = request.post(someData); // 发起某种带响应的HTTPS请求。 inn.value = data;
这里的inn.value = data属于DOM属性操作,专门用于设置表单控件的文本值,和innerHTML、document.write这类会解析HTML的操作完全不同,不存在XSS注入的风险。
额外提醒:
只有当你把不可信数据插入到HTML结构中(比如用innerHTML插入内容、设置元素的outerHTML、使用document.write输出),或者把数据作为JavaScript代码执行时,才会触发XSS漏洞。表单元素的value属性是安全的赋值方式。
内容的提问来源于stack exchange,提问作者snowblade420
相关产品推荐
相关产品推荐

