JS eval() and XSS
JS eval() and XSS
如果我对不可信的数据进行JS编码,并将其放入eval()函数中,例如:
eval('var a="JS_ENCODED_UNTRUSTED_DATA";alert(a);');
在这种情况下,XSS如何仍然可能?
Edit:澄清我的意思是"JS编码":在Java中,我可以使用OWASP Java编码器为各种上下文编码不受信任的数据。例如Encoder.forHTML(UNTRUSTED_DATA),如果我插入不受信任的数据到HTML或Encoder.forJavaScript(UNTRUSTED_DATA),如果我插入不受信任的数据到JS。它只是在将输入字符串插入HTML页面或JavaScript之前对其进行编码或转义。我不太确定编码器是如何。forJavaScript函数对每个字符进行编码,但我知道有些字符只是用'''转义,有些则转换为'xHH格式。
这取决于您如何转义该"数据"。您的数据位于
- 在
"
分隔的JavaScript字符串 中 - 在
'
分隔的JavaScript字符串 中 - 可能在HTML
<script>
元素中(如果没有作为外部脚本加载)。
因此,您需要对数据调用多达三种不同的转义函数以确保其安全。也就是说,您确实很少需要eval
。
相关文章:
- Selenium WebDriver and JavaScript change
- 如何防止在使用.val()时引入XSS漏洞
- PHP and Javascript functions
- Javascript Return and if/else
- SetTimeout and clearTimeout in Javascript
- lightbox in html 5 and javascript
- TimelineJS and AngularJS
- timeago.js with datatable and PHP
- javascript button ajax and php
- Ajax and Json with Rails
- Combine onload, onresize and onclick
- php布尔值's小写AND大写和数字布尔值'可以接受
- setTimeout and V8
- Jquery post and onclick
- XSS通过地址栏注入
- Moment js and IOS
- 如何照顾CSRF&单页应用程序中不使用cookie的XSS攻击
- XSS and htmlentities
- XSS and PHP Attacks
- JS eval() and XSS