在AntiXSS项目中, 各个函数均采用白名单方式进行编码, 比如一个 EncodeHtml() Java函数:
private static String EncodeHtml(String strInput) {
if (strInput.length() == 0) {
return EmptyString;
}
StringBuffer builder = new StringBuffer(strInput.length() * 2);
CharacterIterator it = new StringCharacterIterator(strInput);
for (char ch = it.first(); ch != CharacterIterator.DONE; ch = it.next()) {
if ((((ch > '`') && (ch < '{')) || ((ch > '@') && (ch < '[')))
|| (((ch == ' ') || ((ch > '/') && (ch < ':'))) || (((ch == '.') || (ch == ',')) || ((ch == '-') || (ch == '_'))))) {
builder.append(ch);
} else {
builder.append("" + (int) ch + ";");
}
}
return builder.toString();
}
根据ASCII, 先排除了正常使用的字符, 其他均进行编码。 相比其他采用黑名单编码的自写函数要好的多













