Java 開発: コードのセキュリティと脆弱性の保護
要約:
現在のインターネット時代では、コードのセキュリティと脆弱性の保護は Java 開発にとって非常に重要です。この記事では、いくつかの一般的なコードのセキュリティ リスクと脆弱性を紹介し、対応する解決策を提供します。同時に、具体的なコード例は、これらのセキュリティ問題を防ぐ方法を示しています。
サンプル コード:
import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang3.RandomStringUtils; public class PasswordUtils { private static final int SALT_LENGTH = 16; public static String encryptPassword(String password) { String salt = RandomStringUtils.randomAlphanumeric(SALT_LENGTH); String encryptedPassword = DigestUtils.sha256Hex(password + salt); return salt + encryptedPassword; } public static boolean checkPassword(String inputPassword, String storedPassword) { String salt = storedPassword.substring(0, SALT_LENGTH); String encryptedInputPassword = DigestUtils.sha256Hex(inputPassword + salt); return storedPassword.equals(salt + encryptedInputPassword); } }
サンプル コード:
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class DatabaseUtils { public static void main(String[] args) { String username = "admin'; DROP TABLE users; --"; String password = "pass123"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getConnection(); String sql = "SELECT * FROM users WHERE username = ? AND password = ?"; pstmt = conn.prepareStatement(sql); pstmt.setString(1, username); pstmt.setString(2, password); rs = pstmt.executeQuery(); } catch (SQLException e) { e.printStackTrace(); } finally { closeResources(conn, pstmt, rs); } } private static Connection getConnection() throws SQLException { // 获取数据库连接 return null; } private static void closeResources(Connection conn, PreparedStatement pstmt, ResultSet rs) { // 关闭数据库连接和其他资源 } }
サンプル コード:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>XSS Prevention</title> </head> <body> <h1>Welcome <%= StringEscapeUtils.escapeHtml4(request.getParameter("name")) %></h1> </body> </html>
サンプル コード:
import java.io.File; import java.io.IOException; import java.util.UUID; public class FileUploadUtils { public static void main(String[] args) { String fileName = "evil_script.jsp"; File file = new File("/uploads/" + UUID.randomUUID().toString() + ".jpg"); try { file.createNewFile(); // 处理上传文件的逻辑 } catch (IOException e) { e.printStackTrace(); } } }
結論:
コードのセキュリティと脆弱性の保護は Java 開発にとって重要です。この記事では、パスワード セキュリティ、SQL インジェクション攻撃、クロスサイト スクリプティング攻撃、ファイル アップロードの脆弱性に対する解決策を紹介し、対応するコード例を示します。開発者は常に警戒し、コードのセキュリティの問題や脆弱性を防ぐために適切なセキュリティ対策を講じる必要があります。
以上がJava 開発: セキュリティと脆弱性保護をコード化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。