安全的用户输入

时间:2011-10-27 16:01:42

标签: android sql xml sql-injection

我已经阅读了许多有关转义字符和清理用户输入的论坛(以及堆栈溢出)帖子,但我想将它们联系在一起并使其更加具体到Android平台。这是我的情况:

我有一个Android应用程序,通过SOAP XML消息与Web服务进行通信。这是一个可能发送的示例XML消息(我正在忽略它周围的SOAP信封):

<Log>
    <Summary>user entered text</Summary>
    <Details>user entered text</Details>
</Log>

正如您所看到的,用户可以在一个表单中输入两个地方,然后将其插入到此消息中以发送到Web服务。我需要:
A)确保它是有效的XML和
B)确保它不包含任何恶意SQL内容。

Android API中是否有任何预先包含的实用程序可以转义用户可能输入的无效XML字符(例如&amp;)? (所以我可以简单地说“escapeXML(xmlstring);”或类似的东西)

有没有办法检查恶意SQL(或其他代码注入),还是应该在服务器端处理?

作为旁注:我几乎更喜欢用户只能输入A-z,0-9和基本标点符号(以避免奇怪的unicode字符,有时甚至无法看到或解释)。有没有一种方法可以将用户输入限制为字符子集?

我知道这是一对内置的几个问题,所以如果您只知道其中的一部分,请提供答案,我将非常乐意提出或接受它。在此先感谢您的帮助! (StackOverflow是我来的地方,当时我已经消耗了太多的论坛帖子并且让我自己在我的环境中扭曲了什么)

1 个答案:

答案 0 :(得分:3)

处理SQL Injection的最佳方法是使用参数化查询。这是在服务器端完成的。其他一切都是次要的,不必要的,或者几乎没有触及问题的表面。

您应该阅读以下内容:

在Jeff Atwood的博客上,我喜欢他说的地方:

  

非参数化SQL是数据库编程的GoTo语句。