Pembangunan Java: Keselamatan Kod dan Perlindungan Keterdedahan
Abstrak:
Dalam era Internet semasa, keselamatan kod dan perlindungan kelemahan adalah penting untuk pembangunan Java. Artikel ini akan memperkenalkan beberapa risiko dan kelemahan keselamatan kod biasa dan menyediakan penyelesaian yang sepadan. Pada masa yang sama, contoh kod konkrit digunakan untuk menunjukkan cara menghalang isu keselamatan ini.
Contoh kod:
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); } }
Contoh kod:
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) { // 关闭数据库连接和其他资源 } }
Contoh kod:
<%@ 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>
Contoh kod:
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(); } } }
Kesimpulan:
Keselamatan kod dan perlindungan kelemahan adalah penting untuk pembangunan Java. Artikel ini menerangkan penyelesaian kepada keselamatan kata laluan, serangan suntikan SQL, serangan skrip merentas tapak dan kelemahan muat naik fail serta menyediakan contoh kod yang sepadan. Pembangun hendaklah sentiasa berwaspada dan mengambil langkah keselamatan yang sewajarnya untuk mengelakkan isu dan kelemahan keselamatan kod.
Atas ialah kandungan terperinci Pembangunan Java: Cara Mengekod Keselamatan dan Perlindungan Keterdedahan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!