Безопасный ввод пользователя - PullRequest
1 голос
/ 27 октября 2011

Я прочитал много сообщений на форуме (и переполнение стека), касающихся экранирования символов и очистки входных данных пользователя, но я хотел бы связать все это вместе и сделать его немного более специфичным для платформы Android.Вот мое обстоятельство:

У меня есть приложение для Android, которое связывается с веб-службой через сообщения SOAP XML.Вот пример XML-сообщения, которое может быть отправлено (я оставляю конверт SOAP вокруг него):

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

Как вы можете видеть, есть 2 места, где пользователь может вводить текст в форме, котораязатем вставляется в это сообщение для отправки на веб-сервис.Мне нужно:
A) убедиться, что это правильный XML, и
B) убедиться, что он не содержит вредоносного содержимого SQL.

Существуют ли какие-либо предварительно включенные в API Android утилиты для удаления недопустимых символов XML (таких как &), которые мог ввести пользователь?(Так что я могу просто сказать «escapeXML (xmlstring);» или что-то в этом роде)

Есть ли способ проверить на наличие вредоносного SQL (или другого внедрения кода) или его следует обрабатывать на стороне сервера?

В качестве примечания: я почти предпочел бы, чтобы пользователь мог вводить только Аз, 0-9 и базовую пунктуацию (чтобы избежать странных символов Юникода, которые иногда даже нельзя увидеть или интерпретировать).Есть ли хороший способ ограничить пользовательский ввод подмножеством символов?

Я знаю, что это пара вопросов, встроенных в один, поэтому, если вы знаете только часть этого вопроса, пожалуйста, предоставьте ответ в любом случае, и я будуболее чем счастлив, чтобы поддержать или принять это.Заранее спасибо за помощь!(StackOverflow - это то место, куда я захожу, когда перебираю слишком много веток на форуме и извращаюсь вокруг того, что уместно в моих обстоятельствах)

1 Ответ

3 голосов
/ 27 октября 2011

Лучший способ справиться с SQL-инъекцией - использовать параметризованные запросы.Это делается на стороне сервера.Все остальное является второстепенным, ненужным или едва затрагивает поверхность проблемы.

Вы должны прочитать это:

В блоге Джеффа Этвуда мне нравится, когда он говорит:

Непараметрический SQL - это оператор GoTo программирования баз данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...