为
HTML属性上下文编码不受信任的数据的正确方法是什么?例如:
我通常使用htmlentities()或htmlspecialchars()来执行此操作:
但是,我最近遇到了一个问题,当我需要传递的数据是一个需要传递给JavaScript以更改页面位置的URL时,这会破坏我的应用程序:
// ...
window.location = document.getElementById('foo').value;
// ...
在这种情况下,foo是一个C程序,它不理解URL和段错误中的编码字符.
我可以简单地在JavaScript中获取值,并执行类似value.replace(‘& amp;’,’&’)的操作,但这看起来很糟糕,只适用于&符号.
所以,我的问题是:是否有更好的方法来对注入HTML属性的数据进行编码或解码?
我已经阅读了OWASP’s XSS Prevention Cheatsheet的所有内容,只要我小心引用我的属性就听起来像那么我需要编码的唯一字符是引用本身(“) – 在这种情况下,我可以使用像str_replace(‘“’,’& quot;’,…) – 但是,我不确定我是否正确理解它.