Java によるセキュア コーディング実践ガイド
はじめに:
インターネットの急速な発展に伴い、セキュリティはソフトウェア開発における重要な側面となっています。 Java コードを記述する場合、開発者はアプリケーションを悪意のある攻撃から保護するために、一連の安全なコーディング手法を採用する必要があります。この記事では、一般的なセキュア コーディングの実践方法をいくつか紹介し、対応するコード例を示します。
1. 入力検証
ユーザー入力を処理する場合、ユーザーの入力は信頼できないため、入力検証を常に実行する必要があります。入力検証には、入力されたデータをチェックして、期待される形式と内容に準拠していることを確認することが含まれます。一般的な入力検証手法の例をいくつか示します。
String input = getInputFromUser(); if (input.length() > 10) { throw new IllegalArgumentException("输入长度超过限制"); }
int input = Integer.parseInt(getInputFromUser()); if (input < 0 || input > 100) { throw new IllegalArgumentException("输入必须在0到100之间"); }
String input = getInputFromUser(); String regex = "[A-Za-z0-9]+"; if (!input.matches(regex)) { throw new IllegalArgumentException("输入包含非法字符"); }
SQL インジェクションは一般的なセキュリティ脆弱性であり、攻撃者は入力 SQL コードに悪意のあるコードを挿入して、任意のデータベース操作を実行します。 SQL インジェクション攻撃を回避するためのベスト プラクティスをいくつか紹介します。
String input = getInputFromUser(); String sql = "SELECT * FROM users WHERE username = ?"; PreparedStatement statement = connection.prepareStatement(sql); statement.setString(1, input); ResultSet resultSet = statement.executeQuery();
String input = getInputFromUser(); String sql = "SELECT * FROM users WHERE username = '" + input + "'"; Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery(sql);
String input = getInputFromUser(); List<User> userList = entityManager .createQuery("SELECT u FROM User u WHERE u.username = :username", User.class) .setParameter("username", input) .getResultList();
パスワードのセキュリティは非常に重要な問題です。ここでは、その対処に関するベスト プラクティスをいくつか紹介します。およびパスワードの保護:
String password = getPasswordFromUser(); String hashedPassword = BCrypt.hashpw(password, BCrypt.gensalt());
String password = getPasswordFromUser(); MessageDigest md = MessageDigest.getInstance("SHA-256"); byte[] hashedPassword = md.digest(password.getBytes(StandardCharsets.UTF_8));
String password = getPasswordFromUser(); byte[] salt = getSalt(); KeySpec spec = new PBEKeySpec(password.toCharArray(), salt, ITERATIONS, KEY_LENGTH); SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256"); byte[] hashedPassword = factory.generateSecret(spec).getEncoded();
参考文献:
以上がJava で安全なコーディングを実践するためのガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。