当我允许用户将数据作为参数插入JS innerHTML函数时,如下所示:
element.innerHTML = “User provided variable”;
Run Code Online (Sandbox Code Playgroud)
我明白为了防止XSS,我必须进行HTML编码,然后对用户输入进行JS编码,因为用户可以插入如下内容:
<img src=a onerror='alert();'>
Run Code Online (Sandbox Code Playgroud)
只有HTML或只有JS编码才有帮助,因为.innerHTML我理解的方法在将输入插入页面之前对输入进行解码.使用HTML + JS编码,我注意到.innerHTML只解码JS,但HTML编码仍然存在.
但我能够通过双重编码实现相同的HTML.
我的问题是:有人可以提供一个示例,说明为什么我应该进行HTML编码然后进行JS编码,而不是在使用该.innerHTML方法时在HTML中进行双重编码?
在OWASP XSS 预防备忘单中,它说不能将不受信任的数据安全地放入 .setinterval JS 函数中。即使被转义/编码,XSS 仍然是可能的。
但如果我有这样的事情:
setInterval(function(){ alert('<%=UNTRUSTED_DATA%>'); }, 3000);
Run Code Online (Sandbox Code Playgroud)
如果我 JS 编码“UNTRUSTED_DATA”,XSS 怎么可能?
我试图创建一个简单的python脚本,启动子进程并监视其标准输出.以下是代码中的代码段:
process = subprocess.Popen([path_to_exe, os.path.join(temp_dir,temp_file)], stdout=subprocess.PIPE)
while True:
output=process.stdout.readline()
print "test"
Run Code Online (Sandbox Code Playgroud)
问题是脚本挂起output=process.stdout.readline()并且该行print "test"仅在子进程终止后执行.
有没有办法读取标准输出并打印它,而不必等待子进程终止?
我开始的子进程是Windows二进制文件,我没有源代码.
我发现了几个类似的问题,但答案只适用于Linux或者我有启动的suprocess的来源.
我了解,如果我针对苹果,梨和香蕉的样本图片训练ML分类算法,则可以将这三种图片中的新图片分类。但是,如果我提供汽车的图片,它也会将其分类为这三个类别之一,因为它别无选择。
但是,是否有一种ML分类算法能够判断某项/图片是否真的属于该培训对象的任何类别?我知道我可以创建一个“未知”类,并在不是苹果,梨或香蕉的各种图片上对它进行训练,但是我认为训练范围将非常庞大。听起来不太实用。
xss ×2
algorithm ×1
encoding ×1
innerhtml ×1
javascript ×1
output ×1
python ×1
setinterval ×1
standards ×1
subprocess ×1