防止XSS跨站的详细方法

2009/8/24 来源:www.arpun.com 作者:小白

在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, 先排除了正常使用的字符, 其他均进行编码。 相比其他采用黑名单编码的自写函数要好的多

网友评论
评论(...
全部评论