Développement Java : sécurité du code et protection contre les vulnérabilités
Résumé :
À l'ère actuelle d'Internet, la sécurité du code et la protection contre les vulnérabilités sont cruciales pour le développement Java. Cet article présentera certains risques et vulnérabilités courants en matière de sécurité du code et fournira les solutions correspondantes. Dans le même temps, des exemples de code concrets montrent comment éviter ces problèmes de sécurité.
Exemple de code :
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); } }
Exemple de code :
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) { // 关闭数据库连接和其他资源 } }
Exemple de code :
<%@ 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>
Exemple de code :
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(); } } }
Conclusion :
La sécurité du code et la protection contre les vulnérabilités sont cruciales pour le développement Java. Cet article décrit les solutions à la sécurité des mots de passe, aux attaques par injection SQL, aux attaques de scripts inter-sites et aux vulnérabilités de téléchargement de fichiers, et fournit des exemples de code correspondants. Les développeurs doivent toujours être vigilants et prendre les mesures de sécurité appropriées pour éviter les problèmes de sécurité et les vulnérabilités du code.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!