Maison >Java >javaDidacticiel >Se protéger contre les attaques d'ingénierie sociale en Java
Prévenir les attaques d'ingénierie sociale en Java
Une attaque d'ingénierie sociale est une méthode d'attaque qui utilise des techniques de psychologie et d'ingénierie sociale pour tromper les gens et obtenir des avantages illégaux. Dans le développement Java, Java est devenu une cible de pirates informatiques en raison de sa nature open source et de sa large application. Cet article présentera quelques moyens de se protéger contre les attaques d'ingénierie sociale en Java et fournira quelques exemples de code.
import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import java.util.Base64; public class EncryptionUtils { private static final String KEY = "MySecretKey12345"; public static String encrypt(String data) { try { SecretKeySpec secretKey = new SecretKeySpec(KEY.getBytes(), "AES"); Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, secretKey); byte[] encryptedBytes = cipher.doFinal(data.getBytes()); return Base64.getEncoder().encodeToString(encryptedBytes); } catch (Exception e) { e.printStackTrace(); } return null; } public static String decrypt(String encryptedData) { try { SecretKeySpec secretKey = new SecretKeySpec(KEY.getBytes(), "AES"); Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); cipher.init(Cipher.DECRYPT_MODE, secretKey); byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedData)); return new String(decryptedBytes); } catch (Exception e) { e.printStackTrace(); } return null; } }
Utilisez cette classe d'outils pour le cryptage et le déchiffrement :
public class Main { public static void main(String[] args) { String password = "password123"; String encryptedPassword = EncryptionUtils.encrypt(password); System.out.println("加密后的密码:" + encryptedPassword); String decryptedPassword = EncryptionUtils.decrypt(encryptedPassword); System.out.println("解密后的密码:" + decryptedPassword); } }
public class InputValidation { public static boolean isEmailValid(String email) { String regex = "^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,}$"; return email.matches(regex); } public static boolean isPasswordValid(String password) { String regex = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$"; return password.matches(regex); } public static boolean isPhoneNumberValid(String phoneNumber) { String regex = "^\d{11}$"; return phoneNumber.matches(regex); } } public class Main { public static void main(String[] args) { String email = "example@test.com"; boolean isEmailValid = InputValidation.isEmailValid(email); System.out.println("邮箱是否有效:" + isEmailValid); String password = "Password123"; boolean isPasswordValid = InputValidation.isPasswordValid(password); System.out.println("密码是否有效:" + isPasswordValid); String phoneNumber = "12345678901"; boolean isPhoneNumberValid = InputValidation.isPhoneNumberValid(phoneNumber); System.out.println("手机号是否有效:" + isPhoneNumberValid); } }
@Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/admin/**").hasRole("ADMIN") .antMatchers("/**").permitAll() .and() .formLogin(); } @Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { auth .inMemoryAuthentication() .withUser("admin").password("{noop}admin123").roles("ADMIN") .and() .withUser("user").password("{noop}user123").roles("USER"); } } @RestController public class AdminController { @GetMapping("/admin") public String admin() { return "Welcome, admin!"; } } @RestController public class UserController { @GetMapping("/user") public String user() { return "Welcome, user!"; } } @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
Le code ci-dessus illustre le contrôle des autorisations de rôle sur le chemin "/admin". Seuls les utilisateurs dotés du rôle "ADMIN" peuvent accéder au chemin.
Grâce aux méthodes ci-dessus pour prévenir les attaques d'ingénierie sociale, nous pouvons améliorer la sécurité des applications Java. Bien entendu, il ne s’agit là que de quelques mesures préventives de base. Les développeurs doivent encore continuer à apprendre et à explorer davantage de technologies de sécurité pour faire face aux méthodes d’attaque des pirates en constante évolution.
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!