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

标签 android security

我对 Android 编程相当陌生,所以这可能是一个简单的问题,但我还没有找到答案。 基本上,我正在调用需要 xml 的 C# Web 服务。我对发送未经过滤的用户输入持怀疑态度。有很多地方我必须这样做,但登录就是一个很好的例子:

这是我目前得到的一个粗略版本(从其他 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 服务。 谢谢!

最佳答案

看来此调用容易受到 XML Injection 的攻击,但这对攻击者来说也是无用的。

攻击者将直接访问此 C# Web 服务。没有人关心您的客户提出的请求。您需要确保服务正在保护其自身常见的漏洞,例如 SQL 注入(inject)、命令注入(inject)和目录遍历。

关于Web 服务调用的 Android 用户输入清理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9878704/

相关文章:

java - 以编程方式添加带有约束的textView

java - 如何在android中为一项 Activity 设置屏幕旋转?

PHP $_POST & 拒绝伪造表单安全

security - 网络安全的真正风险在哪里?

sql-server - 替换 ' 转义字符后,T-SQL 的安全性如何?

android - 无法启动 GCM Intent 服务

android - 使用 map 和位置时 grpc 失败

android - tabMode ="scrollable"不工作

java - 如何将 X-Content-Type-Options 添加到 tomcat 配置

security - Meebo 等网站如何存储用户名和密码?