簡體   English   中英

在Java中轉義特殊字符

[英]Escaping special characters in Java

我支持的應用程序正在接受安全審查,並且有一些有關轉義特殊字符的問題。 我已經很長時間沒有為該應用程序提供支持了,而且我對轉義特殊字符也不了解。 我被問到的問題是: “為什么要先對值進行JavaScript編碼,然后再對其進行HTML編碼?該值是否在需要兩個上下文都進行編碼的上下文中寫出?”

使用的JavaScript編碼和使用的HTML編碼有什么區別? 為什么我的代碼中同時需要兩者?

任何有關此的信息將不勝感激!

public class HTMLEncodedResultSet extends ResultSetWrapper {

    public HTMLEncodedResultSet(ResultSet resultSet) {
        super(resultSet);
    }

    public String getString(int columnIndex) throws SQLException {
        return StringEscapeUtils.escapeHtml(StringEscapeUtils.escapeJavaScript(super.getString(columnIndex)));
    }

    public String getString(String columnName) throws SQLException {
        return StringEscapeUtils.escapeHtml(StringEscapeUtils.escapeJavaScript(super.getString(columnName)));
    }

}

從官方文檔中:

轉義

使用HTML實體轉義字符串中的字符。

例如:

“牛油面包”

變成:“面包”和“黃油”。

escapeJavaScript

使用JavaScript字符串規則轉義字符串中的字符。

將找到的所有值轉義為JavaScript String形式。 正確處理引號和控制字符(制表符,反斜杠,cr,ff等)

因此,制表符變為字符“ \\”和“ t”。

例:

輸入字符串:他沒有說“停止!” 輸出字符串:他沒有說“停止!”

因此,鑒於JS和HTML保留字符不同,在您的情況下,如果輸入包含HTML和JS代碼,則可能有必要同時調用這兩種方法。

您的應用程序似乎已將JavaScript代碼段存儲在數據庫中。 這些片段可能創建或包含HTML部分(即,用於基於交互生成動態HTML)。 在Java中將這些摘要作為字符串從DB加載時,需要JavaScript和HTML編碼。

這里是一個可以存儲在數據庫中的值的示例。

var obj = $('#fire');
var fps = 200;
var letters = obj.html().split('');
obj.empty();
$.each(letters,function(el){
    obj.append($('<span>'+this+'</span>'));
});
var animateLetters = obj.find('span');
setInterval(function(){
    animateLetters.each(function(){
        $(this).css('fontSize', 80+(Math.floor(Math.random()*50)));        
    });
},fps);

參考文檔:

escapeHTML :使用HTML實體轉義字符串中的字符。

例如:

“牛油面包”

變成: &quot;bread&quot; &amp; &quot;butter&quot; &quot;bread&quot; &amp; &quot;butter&quot;

escapeJavaScript :將找到的所有值轉入其JavaScript String形式。 正確處理引號和控制字符(制表符,反斜杠,cr,ff等)

因此,制表符變為字符“ \\”和“ t”。

Java字符串和JavaScript字符串之間的唯一區別是,在JavaScript中,必須轉義單引號。

例:

輸入字符串:他沒有說“停止!” 輸出字符串:他沒有說“停止!”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM