Xss saldırısını korumak için, aşağıdaki işlevi kullanarak kullanıcıya görüntülemek istediğim her mesajı kodlamaya çalışıyorum., Xss'in kodlamayı kullanmasını önler, ancak kullanıcı okunabilirliği çok zayıf
function encodeRFC5987ValueChars(str)
{
return encodeURIComponent(str).
// Note that although RFC3986 reserves "!", RFC5987 does not,
// so we do not need to escape it
replace(/['()]/g, escape). // i.e., %27 %28 %29
replace(/\*/g, '%2A').
// The following are not required for percent-encoding per RFC5987,
// so we can allow for a little better readability over the wire: |`^
replace(/%(?:7C|60|5E)/g, unescape);
}
Örnek giriş mesajı bu işlev alınan çıktı mesaj aşağıda gibidir
Start 20 TV's test; star ;; '' -- testagain., comma. </>
aşağıdaki gibidir.
Start%2020%20TV%27s%20test%3B%20star%20%3B%3B%20%27%27%20--%20testagain.%2C%20comma.%20%3C%2F%3E
Aşağıdaki gibi görüntülemeye çalışıyorum.
document.getElementById("labelResult").innerHTML = "Start%2020%20TV%27s%20test%3B%20star%20%3B%3B%20%27%27%20--%20testagain.%2C%20comma.%20%3C%2F%3E";
Her şey iyi çalışıyor, ancak kullanıcı tarafından okunabilirlik çok zayıf.
Kod çözmem gerekiyor mu? Eğer kodu çözersem, o zaman xss saldırısına sebep olur mu?
Herhangi bir öneri lütfen.
Dizeleri kaçmak için 'encodeURIComponent 'kullanmazdım, değiştirilecek şeylerin miktarı aşırı derecede aşırı olur. Bu soruya/cevaplara bakın: http://stackoverflow.com/questions/6234773/can-i-escape-html-special-chars-in-javascript –