3 ΠΏΠΎΠ»Π΅Π·Π½ΡΡ
ΡΠΎΠ²Π΅ΡΠ° Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π² Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅
ΠΡΡΠΎΡΠ½ΠΈΠΊ:
DZone
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Java ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Ρ 1990-Ρ
Π³ΠΎΠ΄ΠΎΠ², ΡΡΠΎ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²ΠΎΡΡΡΠ΅Π±ΠΎΠ²Π°Π½Π½ΡΡ
Π―Π. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Java Π΄Π»Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΈΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ
Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Ρ Π΅Π΅ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π»ΡΠ±ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ.
ΠΡΠ΅ ΠΎΠ΄Π½ΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ Java ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΎΡ ΡΠ·ΡΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π΅ ΡΡΠΎΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΡΠΎ ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½ΠΎΠ΅. ΠΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ β ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π³Π»Π°Π²Π½ΡΡ
ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠ² Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². ΠΡΠ΅Π½Π΅Π±ΡΠ΅ΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠΈΠΌ ΠΏΡΠ°Π²ΠΈΠ»ΠΎΠΌ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π²Π°ΡΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ ΡΡΠΎΠ»ΠΊΠ½Π΅ΡΡΡ Ρ Π½Π΅Π΄ΠΎΠ²Π΅ΡΠΈΠ΅ΠΌ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Π΅ΠΉ.
Π§ΡΠΎΠ±Ρ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΌΡ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠΎΠ²Π΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΡΡΠ°ΡΡ Π΄Π»Ρ Π²Π°Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Java.
ΠΠ°ΡΠΈΡΠ° ΠΎΡ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ SQL-ΠΊΠΎΠ΄Π°
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ SQL-ΠΊΠΎΠ΄Π° β ΠΎΠ΄Π½Π° ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ΅ΡΡΠ΅Π·Π½ΡΡ
ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ. Π‘ Π΅Π΅ ΠΏΠΎΠΌΠΎΡΡΡ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠΌ Π΄Π°Π½Π½ΡΠΌ. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° Ρ
Π°ΠΊΠ΅Ρ ΠΏΠ΅ΡΠ΅Ρ
Π²Π°ΡΡΠ²Π°Π΅Ρ Π·Π°ΠΏΡΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ
ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΈΡ
Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡ
, Π° Π·Π°ΡΠ΅ΠΌ β Π΄Π»Ρ Π»ΡΠ±ΡΡ
Π΄ΡΡΠ³ΠΈΡ
Π½Π΅Π·Π°ΠΊΠΎΠ½Π½ΡΡ
ΡΠ΅Π»Π΅ΠΉ.
Π Π°Π·ΡΠΌΠ΅Π΅ΡΡΡ, ΠΎΡ Π²ΡΠ΅Π³ΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΠΈΡΠΈΡΡΡΡ. Π Π²Π°ΡΠΈΡ
ΡΠΈΠ»Π°Ρ
ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΠΈ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°ΡΠ°ΠΊΠΈ Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ΠΌ SQL-ΠΊΠΎΠ΄Π° Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΡΡ Π·Π°ΠΏΡΠΎΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΡΠΉ Π·Π°ΠΏΡΠΎΡ (prepared statement). Π ΠΈΠ΄Π΅Π°Π»Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ². ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ Java-ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ Π»ΡΡΡΠ΅ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ:
public void prepStatmentExample(String parameter) throws SQLException {
Connection connection = DriverManager.getConnection(DB_URL, USER, PASS);
String query = "SELECT * FROM USERS WHERE lastname = ?";
PreparedStatement statement = connection.prepareStatement(query);
statement.setString(1, parameter);
System.out.println(statement);
ResultSet result = statement.executeQuery();
printResult(result);
}
ΠΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
ΠΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΡΡ
ΡΠΎΠ²Π΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΌ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Π»ΡΠ±Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². ΠΠ°ΠΆΠ΅Π½ ΠΎΠ½ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΅ΡΠ΅ ΡΠ°Π· ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΊΠΎΠ΄ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ. ΠΡΠ΅Π½Π΅Π±ΡΠ΅Π³Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π²Ρ ΠΏΠΎΠΏΡΠΎΡΡΡ ΡΠ°Π·ΡΡΡΠΈΡΠ΅ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΈ ΡΠ΅ΠΏΡΡΠ°ΡΠΈΡ ΡΠ²ΠΎΠ΅Π³ΠΎ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠ°ΠΊΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π»ΡΡΡΠ΅ Π²ΡΡΠ²Π»ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΡΡ
ΠΠ°ΠΆΠ΄ΠΎΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ
Π΄Π°Π½Π½ΡΡ
, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ Π±Π°Π½ΠΊΠΎΠ²ΡΠΊΠΈΠ΅ ΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΠΈ ΡΠΎΠΌΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌ Π²Π°ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΡΠΌΠΈ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠ°ΠΊΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΡΡΡΠ΅ Π·Π°ΡΠ°Π½Π΅Π΅ ΡΠ°ΡΡΡΠΈΡΠ°ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π Π½Π΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ ΠΎΡΠΈΡΡΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ toString () Π² ΡΡΡΠ½ΠΎΡΡΠΈ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ.
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Java, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° ΡΡΠΈΡΡΠ²Π°Π΅Ρ Π²ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΡΠΏΠΎΡΠΎΠ±Π½Π° ΠΏΠΎΠΌΠΎΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ, Π½ΠΎ ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠΌ. ΠΠΎΠΆΠ΅ΡΠ΅ Π½Π΅ ΡΠΎΠΌΠ½Π΅Π²Π°ΡΡΡΡ: Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π²Π°ΠΌ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Π³ΡΠ΅ ΠΏΠΎΠ΄Π½ΡΡΡ ΡΠ²ΠΎΠΉ Π±ΠΈΠ·Π½Π΅Ρ Π½Π° Π½ΠΎΠ²ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ.
4 ΡΠΏΠΎΡΠΎΠ±Π° Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π°, ΠΎ ΠΊΠΎΡΠΎΡΡΡ
Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ
ΠΡΡΠΎΡΠ½ΠΈΠΊ:
TechBeacon
ΠΡ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° ΡΠ»ΡΡΠ°Π»ΠΈ ΡΠ΅ΡΠΌΠΈΠ½ Β«ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Β». Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄ Π½ΠΈΠΌ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°ΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄. ΠΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΠ΅ΠΉ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°, Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ
Π΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ.
Π‘Π°ΠΌΡΠΉ ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌΡΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΊΠΎΠ΄Π° Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ SAST (Static Application Security Testing β ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°ΡΠΈΡΠ΅Π½Π½ΠΎΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ). Π‘ΡΠΈΡΠ°Π΅ΡΡΡ, ΡΡΠΎ ΡΡΠΎ Π½Π°ΠΈΠ»ΡΡΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎ ΠΊΡΠΎΠΌΠ΅ Π½Π΅Π³ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, Π²Π΅Π΄Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ
ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΠΏΡ ΠΎΡΠΈΠ±ΠΎΠΊ.
ΠΠΎΡ ΡΠ΅ΡΡΡΠ΅ ΡΠΈΠΏΠ° Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΡΠΎΠ²Π΅ΡΡΡ Π²Π°ΠΌ ΠΈΠ·ΡΡΠΈΡΡ. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ
ΡΠ²ΠΎΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°.
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΊΠΎΠ΄ΠΈΠ½Π³Π°, ΡΠ½ΠΈΠΆΠ°ΡΡΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, BoxedPrimitiveConstructor ΠΈΡΠ΅Ρ ΡΠ°Π±Π»ΠΎΠ½Ρ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Β«new Boolean (true)Β». Π ΡΠ°Π½Π½ΠΈΡ
Π²Π΅ΡΡΠΈΡΡ
Java ΠΎΠ½ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ, Π½ΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π»Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΡΠ°ΠΊΠΈΡ
Π°Π½ΡΠΈ-ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π²Ρ ΠΈΡΠΊΠ»ΡΡΠ°Π΅ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠΏΠ°Π΄ΡΡ Π² Π²Π°ΡΡ Π±Π°Π·Ρ ΠΊΠΎΠ΄Π°. ΠΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ ΠΈ Π² ΠΏΠ»Π°Π½Π΅ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ: ΠΎΠ½ΠΈ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΡΡΡ ΠΎΠΏΡΡΠ½ΡΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈΡΡ best practices ΠΊΠΎΠ΄ΠΈΠ½Π³Π° ΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½ΠΎΠ²ΠΈΡΠΊΠ°ΠΌ Π»ΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΏΡΠ°Π²ΠΈΡΡΡΡ Ρ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ.
ΠΠ°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ
Π’Π°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠ°ΠΊ NullPointerException Π² Java ΠΈΠ»ΠΈ ΡΡΠ΅ΡΠΊΠ° ΡΠ΅ΡΡΡΡΠΎΠ² Π² C ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅ Π²Π»ΠΈΡΡΡ Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ. ΠΠΎ ΠΈΡ
Π½ΡΠΆΠ½ΠΎ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»ΡΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠΌΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ΅ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΠ·-Π·Π° ΠΏΡΠΎΡΡΠΎΡ.
Π‘ΠΎΠ³Π»Π°ΡΠΈΡΠ΅ΡΡ, Π½ΠΈΠΊΡΠΎ Π½Π΅ Ρ
ΠΎΡΠ΅Ρ Π² 3 ΡΡΡΠ° ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π·Π²ΠΎΠ½ΠΎΠΊ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π²Π°Ρ ΡΠ΅ΡΠ²ΠΈΡ Β«Π»Π΅ΠΆΠΈΡΒ». ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°, ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π½Π° Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ, ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΌΠΎΡΡ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΡΠ°ΠΊΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠ°Π·Π²ΠΈΡΠΈΡ ΡΠΎΠ±ΡΡΠΈΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ
Infer ΠΎΡ Facebook ΡΠΏΠΎΡΠΎΠ±Π΅Π½ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ NullPointer, ΡΡΠ΅ΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ / ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ².
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ±ΡΠ΅ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, ΡΡΠΎ ΡΡΠ΅ΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ ΡΡΡΠ΄Π½ΠΎ Π½Π°ΠΉΡΠΈ ΠΈ ΠΎΡΠ»Π°Π΄ΠΈΡΡ, ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ Π΄Π»Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΎΡΠΈΠ±ΠΎΠΊ: ΠΎΠ½ΠΈ ΡΠΊΠΎΠ½ΠΎΠΌΡΡ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΈ ΠΏΠΎΠ²ΡΡΠ°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π² Π΄ΠΎΠ»Π³ΠΎΡΡΠΎΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π΅.
ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ
ΠΡΡΡ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠΏΠ΅ΠΊΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΡΠ΄ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΡ
Π΄Π»Ρ ΠΈΡ
Π²ΡΡΠ²Π»Π΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠ΅ΡΠΎΠ΄Ρ, Π½Π°ΡΠ΅Π»Π΅Π½Π½ΡΠ΅ Π½Π° ΠΏΠΎΠΈΡΠΊ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΏΠΎΡΠΎΠΊΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ (β
1,
3 ΠΈ
7 ΠΈΠ· Π΄Π΅ΡΡΡΠΊΠΈ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠ³ΡΠΎΠ· Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ OWASP Top 10), Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Ρ
ΠΎΡΠΎΡΠΈ Π΄Π»Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ (SANS 25 Issue #1).
ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π²Ρ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π·Π°Π±ΠΎΡΠΈΡΠ΅ΡΡ ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
Π£ΠΏΠΎΠΌΡΠ½ΡΡΡΠΉ Π²ΡΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Infer ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΡΠΎΠΊΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π°ΡΠ°ΠΊΠΈ Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈΠ»ΠΈ Π½Π΅ΡΠ΄Π°ΡΠ½ΡΠ΅ ΠΏΠΎΠΏΡΡΠΊΠΈ Π·Π°ΡΠΈΡΡΠΎΠ²Π°ΡΡ Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Infer Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π½Π° ΡΠΊΡΠ°Π½ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈ Π΅Π³ΠΎ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Π½Π° ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΡΠ»ΡΡΡΠΈΡΡ ΡΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Β«ΡΠΈΠ³Π½Π°Π» / ΡΡΠΌΒ».
ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ
FindSecBugs ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ»ΠΎΡ
ΠΎ Π·Π°ΡΠΈΡΠ΅Π½Π½ΠΎΠΉ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΠΈ ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°. ΠΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ βΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈβ β Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ.
Π‘ΡΠΈΠ»Ρ
ΠΡΠ΅ ΠΎΠ΄Π½Π° Ρ
ΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° β ΠΏΠΎΠΎΡΡΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Π² Π΅Π΄ΠΈΠ½ΠΎΠΌ ΡΡΠΈΠ»Π΅. ΠΠ΅ ΡΠ°ΠΊ Π²Π°ΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΡΠΈΠ»Ρ, ΠΊΠ°ΠΊ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡ, ΡΡΠΎΠ±Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°Π»ΠΈΡΡ Π΅Π³ΠΎ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ
ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΠΏΠΎ ΡΡΠΈΠ»Ρ ΠΎΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Airbnb.
ΠΡΡΡ Π΄Π²Π΅ Π²Π΅ΡΠΊΠΈΠ΅ ΠΏΡΠΈΡΠΈΠ½Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ Π½Π°ΡΡΡΠ΅Π½ΠΈΠΉ ΡΡΠΈΠ»Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ
, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠΎ-Π²ΡΠΎΡΡΡ
, Π΅ΡΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠΈΠ±ΠΈΡΡΡΡ, ΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΡΡΠΎΠ³ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄ΠΎΠΏΡΡΡΠΈΡ β ΠΎΠ½ Π²ΡΠ΅Π³Π΄Π° ΡΠΊΠ°ΠΆΠ΅Ρ Π½Π° Π½Π°ΡΡΡΠ΅Π½ΠΈΡ ΡΡΠΈΠ»Ρ.
ΠΠΈΠΊΡΠΎ Π½Π΅ Ρ
ΠΎΡΠ΅Ρ Π±ΡΡΡ ΡΠ΅ΡΠ΅Π½Π·Π΅Π½ΡΠΎΠΌ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π΄ΡΡΠ³ΠΈΠΌ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΡΠΎΠ±Π΅Π»Π°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
. ΠΡΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌ Π²Π·ΡΡΡ Π½Π° ΡΠ΅Π±Ρ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Π·Π° ΡΠ°ΠΊΡΡ Π΄ΠΎΡΠΎΡΠ½ΠΎΡΡΡ, ΡΡΠΎΠ±Ρ ΡΠ»Π΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΌΠΎΠ³Π»ΠΈ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° ΡΠ»ΡΡΡΠ΅Π½ΠΈΠΈ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΡ
Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ
Π°ΡΠΏΠ΅ΠΊΡΠ°Ρ
ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠ΄Π°.
ΠΠ·Π°ΠΈΠΌΠΎΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡΡ
Π‘ ΡΠ°ΠΊΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΡ
Π΄Π»Ρ ΡΠΈΡΠΎΠΊΠΎΠ³ΠΎ ΠΎΡ
Π²Π°ΡΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΡΠΈΠΏΠΎΠ² ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΡΡΠΈΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π² DevOps ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½Π°.
Π‘Π°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅ Π·Π΄Π΅ΡΡ β ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΡΠ΅Π»Ρ Π΄Π»Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΊΠΎΠ΄Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ (Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ IDE, ΠΊΠΎΡΠΎΡΡΠ΅, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΌΠ΅Π½Π΅Π΅ ΡΠ²ΡΠ·Π½Ρ) ΠΈ ΡΠ°ΡΡΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎ.
ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠ°ΡΡΠΈΡΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°, Π½Π°ΡΠ½ΠΈΡΠ΅ Ρ ΠΏΡΠΎΡΡΡΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² β
FindSecBugs ΠΈ
PMD, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΡΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ΄ ΠΏΠΎΠΈΡΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΡ ΠΈ ΡΡΠΈΠ»Π΅ΠΌ ΠΊΠΎΠ΄Π°.
Infer ΠΈ
ErrorProne Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ Π² ΡΠ°Π±ΠΎΡΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠ΅Π±ΡΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ, Π½ΠΎ ΠΎΠ½ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡΠ±ΠΎΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·. Π£ΡΠΈΡΡΠ²Π°Ρ ΡΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΏΠΎΠ²ΡΡΠ°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΡ, Π²ΡΠ΅ΠΌΡ, ΠΏΠΎΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π½Π° Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΈΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΠ°Π±ΠΎΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ ΡΡΠΎΠΈΡ ΡΠΎΠ³ΠΎ.