Я не парень Java, но OpenCV является большим для моих потребностей. Не уверенный, если это соответствует Вашему. Вот порт Java, я думаю: http://docs.opencv.org/2.4/doc/tutorials/introduction/desktop_java/java_dev_intro.html
Я не эксперт, но я достаточно уверен, что это будет безопасно.
Но зачем рисковать? Используйте параметризованный SQL, и вам никогда не придется об этом беспокоиться.
Кроме того, параметризация вашего SQL имеет другие преимущества, а не только защиту от инъекций.
Вероятно , но стоит проверить.
Что касается ответа Ричарда, у меня иногда возникали проблемы с тем, что IsNumeric () был немного более либеральным в том, что он будет принимать в качестве действительного числа, чем фактический CAST в числовой (на самом деле, это зависит от настроек локализации). Такие вещи, как «-0», «3E-5», «5.000.000» иногда удовлетворяют IsNumeric, но не приводят должным образом. Так что я обычно делаю полную попытку, вместо этого ловлю фактический оператор приведения.
Если строка была допустимым числом до того, как вы преобразовали ее в целое число, да, это безопасно. Но вы должны убедиться, что это действительное целое число, прежде чем преобразовывать его в int.
Я не знаю, какой язык на стороне сервера вы используете, но в PHP вы можете использовать функцию is_numeric (). Например:
$strYouExpectToBeInt = $_POST['id'];
try {
if (false === is_numeric($strYouExpectToBeInt)) {
throw new Exception('id is not a numeric string or a number');
}
$strYouExpectToBeInt = (int)$strYouExpectToBeInt;
if (false === is_int($strYouExpectToBeInt)) {
throw new Exception('id is not a valid integer');
}
// everything is ok, you can use $strYouExpectToBeInt
// in SQL query now
} catch (Exception $e) {
echo $e->getMessage();
}
Это безопасно с точки зрения предотвращения внедрения sql, но не совсем хорошая идея, так как вы получаете исключение , которого всегда следует избегать по возможности, поскольку исключения стоят дорого. Вы действительно должны правильно дезинфицировать ввод. И, конечно же, пользователь может изменить значение в любом диапазоне в пределах значения int32.