用于Web服务调用的Android用户输入清理

时间:2012-03-26 19:48:56

标签: android security

我对Android编程很新,所以这可能是一个简单的问题,但我还没有找到答案。 基本上,我正在调用一个需要xml的C#webservice。我对发送未经过滤的用户输入很谨慎。有很多地方我必须这样做,但登录是一个很好的例子:

这是我目前得到的粗略版本(从其他SO示例拼凑而成):

String userName = "MyUserName";
String password= "MyPassword";
String url = "http://mywebserviceurl.com/auth;
String xml = "<AuthenticateModel xmlns=\"http://schemas.datacontract.org/2004/07/Mycompany.Auth.Lib\">\n" +
            "  <EmailAddress>" + userName + "</EmailAddress>\n" +
            "  <EncodedPassword>" + password + "</EncodedPassword>\n" +
            "</AuthenticateModel>";

HttpClient httpclient = new DefaultHttpClient();
HttpPost post = new HttpPost(url);
StringEntity str = new StringEntity(xml);
str.setContentType("application/xml; charset=utf-8");
str.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/xml; charset=utf-8"));
post.setEntity(str);
HttpResponse httpResponse = httpclient.execute(post);

效果很好。用户信息在服务器端处理,但将它完全未经过滤发送似乎是个坏主意。我很感激反馈。

此外:我将用户名存储在应用程序首选项中,因此不仅仅是我关注的Web服务。 谢谢!

1 个答案:

答案 0 :(得分:2)

看起来这个调用容易受到XML Injection的攻击,但这对攻击者来说也没用。

攻击者只是直接访问此C#webservice。没有人关心您的客户正在建立的请求。您需要确保该服务正在保护其自身形式的常见漏洞,如SQL注入,命令注入和目录遍历。