您是否知道任何好的编码约定可以快速警告程序员某些变量(或配置条目等)包含用户提供的内容?我正在尝试提高对将未转义内容粘贴到 HTML/JavaScript/HTTP 中的几种攻击媒介(如 XSS)的认识。
例如:
String UserName_UNTRUSTED = readUrlParam("username");
补充说明: 我专门寻找 Java 编码约定。
您是否知道任何好的编码约定可以快速警告程序员某些变量(或配置条目等)包含用户提供的内容?我正在尝试提高对将未转义内容粘贴到 HTML/JavaScript/HTTP 中的几种攻击媒介(如 XSS)的认识。
例如:
String UserName_UNTRUSTED = readUrlParam("username");
补充说明: 我专门寻找 Java 编码约定。
GWT 使用像SafeHtml这样的类。
只要正确创建了 SafeHtml 实例,这将使用 Java 的强类型来帮助防止未转义的用户内容到达页面。有多种方法可以转义、连接和使用安全常量。通过以一致的方式使用 SafeHtml,可以更轻松地跟踪变量的来源以及需要转义的内容。
相同的想法可以用于一般的 Java 程序。
一个不错的选择是:
来自用户的所有字符串都必须存储在变量(或数据库列)中,其名称以前缀“us”(表示不安全字符串)开头。所有经过 HTML 编码或来自已知安全位置的字符串都必须存储在名称以前缀“s”(安全字符串)开头的变量中。
这取自 Joel 关于命名约定的帖子,您可以阅读全文: http ://www.joelonsoftware.com/articles/Wrong.html