將HTML寫入數(shù)據(jù)庫的基本原則就是將HTML的標(biāo)簽進(jìn)行編碼和解碼。
以下是JAVA代碼。
/**
* 獲取表單參數(shù)的數(shù)值。
*
* param escapeHTMLTags escapeHTMLTags=true不允許使用htmltag。
*/
public static String getEscapeHTMLParameter(HttpServletRequest request
, String paramName
, String defaultValue) {
String temp = StringUtils.escapeHTMLTags(RequestUtils.getParameter(request
, paramName, true));
if ( (temp == null) || (temp.equals(""))) {
temp = defaultValue;
}
return StringUtils.nullToString(temp);
}
*/
public static final String escapeHTMLTags(String input) {
//Check if the string is null or zero length -- if so, return
//what was sent in.
if (input == null || input.length() == 0) {
return input;
}
//Use a StringBuffer in lieu of String concatenation -- it is
//much more efficient this way.
StringBuffer buf = new StringBuffer(input.length());
char ch = ' ';
for (int i = 0; i < input.length(); i++) {
ch = input.charAt(i);
if (ch == '<') {
buf.append("<");
}
else if (ch == '>') {
buf.append(">");
}
else {
buf.append(ch);
}
}
return buf.toString();
}
html文本寫入數(shù)據(jù)庫需要轉(zhuǎn)換的字符:
ado.net中還可以用SQL的參數(shù)化SQL語句防止HTML的注入,比如下面的例子,可以將remark的內(nèi)容視為HTML的內(nèi)容: