2017-01-16 12 views
3

У меня проблема с моим кодом Java. Мой преподаватель в университете попросил меня использовать «kiuwan», как онлайн-кода оценщиком, и он нашел эту проблему на моем коде:[Java] [SQL] Hardcoded имя пользователя и пароль по запросу

HARDCODED учетные данные (имя пользователя/пароль), которые видны любому человеку чтение исходного кода. Если ресурс, защищенный такими жестко запрограммированными учетными данными, важен, это может поставить под угрозу безопасность системы. С жестко запрограммированными учетными данными изменение затруднено. Если целевая учетная запись скомпрометирована, а программное обеспечение развернуто на производстве, требуется изменение кода, что вынуждает перераспределить. Обратите внимание, что доступ к исходному коду не всегда необходим: если злоумышленник имеет доступ к файлу JAR, он может удалить его, чтобы восстановить пароль в ясном состоянии.

И он нашел эту проблему на моем 3 querys:

public static final String CHECK_USER = "SELECT nome FROM utenti WHERE nome=? AND password=?"; 
public static final String INSERT_USER = "INSERT INTO utenti (nome, password) VALUES (?, ?)"; 
public static final String CHECK_USER_NAME = "SELECT nome FROM utenti WHERE nome=?"; 

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

Спасибо всем!

+0

На самом деле ваш учитель не упоминает о том, как структурированы ваши SQL-запросы, что он или она упоминает о ваших учетных данных подключения, скорее всего, вы использовали жесткое соединение с явным именем пользователя и паролем, это называется плохой практикой выбор кодирования. Пример, подобный вашему, может быть http://stackoverflow.com/questions/11634379/username-password-etc-hardcoded-into-program-how-to-pick-them-up-from-a-file – Hayra

+0

Проверьте это: http://stackoverflow.com/questions/12937641/handling-passwords-used-for-auth-in-source-code –

ответ

4

Я не думаю, что ваш учитель говорит об этих запросах. Я думаю, что он говорит о том, как ваш код создает соединение с базой данных. Он обнаружил, что вы установили имя пользователя и пароль для учетной записи базы данных в свой код Java.

Простое решение для этого - прочитать данные учетной записи базы данных из файла конфигурации ... хотя теперь у вас есть проблема сохранения безопасного файла конфигурации.

(Почему я думаю, что это? Потому что текст, который вы цитировали ваши переговоры учителей о чтении пароля из исходного кода или файла JAR ... не из базы данных.)


Для запись, также плохая идея хранить пароли в базе данных. Но об этом не говорит ваш учитель.

Методы предотвращения хранения паролей в базе данных сложнее. Типичным решением является создание посещенного крипто-хэша для пароля и сохранение , что в базе данных. Но вы не можете восстановить исходный пароль. Если вам нужно это сделать, тогда все становится еще «волосатым» ... с точки зрения безопасности.

+0

«создать посещенный крипто-хэш для пароля» +1 – Sid

+0

«цитируемый текст» из kiuwan (онлайн-оценщик) не от моего учителя ... в любом случае я не знаю, как это исправить @Stephen C –

+0

@ClaudioCiociola - 1) Ваш учитель (предположительно) утверждает, что «kiuwan» говорит вам. 2) Так как вы не показали нам соответствующие части кода, я не вижу, как я могу сказать вам, как это исправить. (Помимо того, что я уже сказал, т. Е. Пункта 2 моего ответа.) –

 Смежные вопросы

  • Нет связанных вопросов^_^