Tag: autobean

Autobean和XSS问题

我在后端有一个Spring应用程序,在前端有一个GWT应用程序。 当用户登录时,”index.jsp”将用户信息输出为javascript变量。 我使用AutoBeanFactory将用户信息编码和解码为json。 因为用户可以注册并且用户信息存储在数据库中,所以我尝试通过转义JSP页面中的用户信息来遵循OWASP XSS预防备忘单 。 我正在使用esapi库进行编码。 服务器端代码如下所示: public static String serializeUserToJson(CustomUser user) { String json; AppUserProxy appUserProxy = appUserFactory.appuser().as(); appUserProxy.setFirstname(encoder.encodeForHTML(user.getFirstname())); appUserProxy.setLastname(encoder.encodeForHTML(user.getLastname())); AutoBean bean = appUserFactory.appuser(appUserProxy); json = AutoBeanCodex.encode(bean).getPayload(); return json; } 我尝试使用encodeForHTML和encodeForJavaScript() 。 这适用于普通字符但是只要我使用Umlaute字符(ü,ä,ö)我遇到问题。 如果我使用encodeforHTML()函数,javascript变量看起来像这样(注意firstname有一个ü): var data = {‘user’:'{“email”:”john.doe@gmail.com”,”lastname”:”Doe”,”firstname”:”Über”}’}; 使用Autobean进行解码工作正常,但字符ü未正确显示但HTML转义了一个( Über )。 当我使用encodeForJavaScript()函数时,输出如下: var data = {‘user’:'{“email”:”john.doe@gmail.com”,”lastname”:”Doe”,”firstname”:”\\xDCber”}’}; 当我尝试解码JSON字符串时,我遇到了一个奇怪的问题。 在开发模式/托管模式下,解码工作正常,并且正确显示变音符号。 但是,只要我在生产模式下运行代码,我就会得到一个未被捕获的exception: java.lang.IllegalArgumentException: Error parsing JSON: […]