2015-04-20 2 views
0
try { 
    Class.forName(driver); 
    con = DriverManager.getConnection(url + db, user, pass); 
    PreparedStatement st = con.prepareStatement(
     "INSERT INTO menu(menu.menuID,menu.name,menu.info,menu.price) values(?,?,?,?)"); 
    st.setString(1, value1); 
    st.setString(2, value2); 
    st.setString(3, value3); 
    st.setString(4, value4); 
    st.executeUpdate(); 
    JOptionPane.showMessageDialog(p1, "Data is successfully inserted into database."); 
    con.close(); 
} catch (Exception e) { 
    JOptionPane.showMessageDialog(p1, 
      "Error in submitting data!"); 
} 

Я побежал FindBugs и это ошибка, которая приходит в строке 3:FindBugs вопрос для пароля

Запрограммированные постоянный пароль базы данных в ie.lyit.flight.Changeadd$3.actionPerformed(ActionEvent)

Этот код создает базу данных подключения с помощью жёстко , постоянный пароль. Любой, кто имеет доступ к исходному коду или скомпилированному коду, может легко узнать пароль.

Ранг: Scary (7), уверенность в себе: Нормальный Выкройка: DMI_CONSTANT_DB_PASSWORD Тип: Dm, Категория: Безопасность (Security)

мне было интересно, если кто-нибудь знает, как избавиться от этой ошибки и как Я бы это сделал?

+1

Ваш код не включает строки FindBugs compaints о. Где определяется 'pass'? –

+0

Посмотрите на http://stackoverflow.com/questions/3132130/findbugs-and-database-password-security-issue –

+0

Я знаю это, но его просто код, с которым мне сложно писать. Как сделать пароль зашифрованным, чтобы никто не мог видеть буквы, когда они смотрят на код .. например (*********) – reginafalange101

ответ

0

Инструменты анализа кода проверяют любые надежды цикла в коде наряду с поиском лучших практик (или их нарушений).

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

0

Если вы используете JTD для подключения базы данных, нет необходимости ввести имя пользователя и пароль для connection.Try ниже code-

  Connection conn = null; 
      String url = "jdbc:jtds:sqlserver://" +serverName+ "/" +"master"; 
      String driver = "net.sourceforge.jtds.jdbc.Driver"; 
      Class.forName(driver); 
      conn = DriverManager.getConnection(url); 

мастер является имя базы данных в моем case.Just заменить его с вашим ,

+0

Невероятно! Большое спасибо Яш :) – reginafalange101

0

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

Вы также можете посмотреть по адресу:

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