Java でのソーシャル エンジニアリング攻撃を防ぐ
ソーシャル エンジニアリング攻撃とは、心理学やソーシャル エンジニアリングの手法を利用して人々を騙し、違法な利益を得る攻撃を意味します。 Java 開発では、Java はオープンソースで幅広い用途に使用されているため、ハッカーの標的になっています。この記事では、Java でソーシャル エンジニアリング攻撃から保護する方法をいくつか紹介し、いくつかのコード例を示します。
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; } }
暗号化と復号化にはこのツール クラスを使用します:
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); } }
上記のコードは、「/admin」パス (「ADMIN」ロールを持つユーザーのみ) でのロール権限制御を示しています。このパスにアクセスするには、
ソーシャル エンジニアリング攻撃を防ぐ上記の方法を通じて、Java アプリケーションのセキュリティを向上させることができます。もちろん、これらは基本的な予防策の一部にすぎず、開発者は、刻々と変化するハッカーの攻撃手法に対処するために、さらに多くのセキュリティ テクノロジを引き続き学習し、探索する必要があります。
以上がJava でのソーシャル エンジニアリング攻撃から保護するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。