我已经阅读了很多关于转义字符和清理用户输入的论坛(和堆栈溢出)帖子,但我想将它们结合在一起并使其更适合 Android 平台。这是我的情况:
我有一个 Android 应用程序,它通过 SOAP XML 消息与 Web 服务进行通信。下面是一个可能发送的示例 XML 消息(我省略了它周围的 SOAP 信封):
<Log>
<Summary>user entered text</Summary>
<Details>user entered text</Details>
</Log>
如您所见,用户可以在 2 个地方输入表单中的文本,然后将其插入到要发送到 Web 服务的消息中。我需要:
A) 确保它是有效的 XML 和
B) 确保它不包含任何恶意 SQL 内容。
Android API 中是否有任何预先包含的实用程序来转义用户可能输入的无效 XML 字符(例如 &)? (这样我就可以简单地说“escapeXML(xmlstring);”或类似的东西)
是否有任何方法可以检查恶意 SQL(或其他代码注入(inject)),还是应该在服务器端处理?
作为旁注:我几乎更希望用户只能输入 A-z、0-9 和基本标点符号(以避免有时甚至无法看到或解释的奇怪的 unicode 字符)。有没有一种好方法可以将用户输入限制为字符子集?
我知道这是一个内置的几个问题,所以如果您只知道其中的一部分,请无论如何提供一个答案,我将非常乐意投票或接受它。在此先感谢您的所有帮助! (StackOverflow 是当我消耗了太多的论坛线程并且让自己对什么是适合我的情况感到困惑的时候来的地方)
最佳答案
最好的处理方式SQL Injection正在使用参数化查询。这是在服务器端完成的。其他一切都是次要的、不必要的或仅触及问题的表面。
你应该阅读这些:
- > Safe DateTime in a T-SQL INSERT statement
- > problem in inserting the value in the database
- > http://www.codinghorror.com/blog/2005/04/give-me-parameterized-sql-or-give-me-death.html
在 Jeff Atwood 的博客上,我喜欢他说的地方:
Non-parameterized SQL is the GoTo statement of database programming.
关于android - 安全的用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7918830/