Seoul Fit νλ‘μ νΈμ 보μμ μ€μνκ² μκ°ν©λλ€. μ΄ λ¬Έμλ 보μ μ·¨μ½μ μ μ κ³ νλ λ°©λ²κ³Ό μ°λ¦¬μ 보μ μ μ± μ μ€λͺ ν©λλ€.
νμ¬ λ³΄μ μ λ°μ΄νΈλ₯Ό λ°λ λ²μ :
| Version | Supported |
|---|---|
| 1.0.x | β |
| < 1.0 | β |
보μ μ·¨μ½μ μ λ°κ²¬νμ ¨λ€λ©΄, κ³΅κ° μ΄μλ‘ λ³΄κ³ νμ§ λ§μΈμ. λμ λ€μ λ°©λ² μ€ νλλ₯Ό μ¬μ©ν΄ μ£ΌμΈμ:
- μ΄λ©μΌ: [email protected]
- GitHub Security Advisories: Security Advisories νμ΄μ§
- PGP μνΈν μ΄λ©μΌ (μ νμ¬ν):
PGP Key Fingerprint: [μΆν μ 곡]
ν¨κ³Όμ μΈ μ·¨μ½μ μ²λ¦¬λ₯Ό μν΄ λ€μ μ 보λ₯Ό ν¬ν¨ν΄ μ£ΌμΈμ:
- μ·¨μ½μ μ ν (μ: SQL Injection, XSS, CSRF λ±)
- μν₯λ°λ μ»΄ν¬λνΈ (νμΌ κ²½λ‘, λͺ¨λλͺ )
- μ¬ν λ¨κ³ (μμΈν λ¨κ³λ³ μ€λͺ )
- μν₯ λ²μ (μ΄λ€ λ°μ΄ν°λ κΈ°λ₯μ΄ μν₯λ°λμ§)
- κ°λ μ¦λͺ (PoC) μ½λ (μλ κ²½μ°)
- μ μνλ μμ λ°©λ² (μλ κ²½μ°)
## μ·¨μ½μ μμ½
[μ·¨μ½μ μ λν κ°λ¨ν μ€λͺ
]
## μν₯λ°λ λ²μ
- λ²μ : [μ: 1.0.0 - 1.0.3]
## μ·¨μ½μ μμΈ
[μμΈν μ€λͺ
]
## μ¬ν λ¨κ³
1. [첫 λ²μ§Έ λ¨κ³]
2. [λ λ²μ§Έ λ¨κ³]
3. [κ²°κ³Ό]
## μν₯
[μ΄ μ·¨μ½μ μ΄ μ
μ©λ κ²½μ°μ μν₯]
## μ μνλ ν΄κ²°μ±
[κ°λ₯ν ν΄κ²° λ°©λ²]- μ΅μ΄ μλ΅: 48μκ° μ΄λ΄
- μν μ λ°μ΄νΈ: 5μΌλ§λ€
- ν¨μΉ 릴리μ€: μ¬κ°λμ λ°λΌ
- π΄ Critical: 24μκ° μ΄λ΄
- π High: 7μΌ μ΄λ΄
- π‘ Medium: 30μΌ μ΄λ΄
- π’ Low: λ€μ μ κΈ° 릴리μ€
- μΈμ¦ μ°ν
- μ격 μ½λ μ€ν
- λ°μ΄ν° μ μΆ (λλ)
- μλΉμ€ μ 체 μ€λ¨
- κΆν μμΉ
- SQL Injection
- λ―Όκ° μ 보 λ ΈμΆ
- XSS (μ μ₯ν)
- CSRF
- XSS (λ°μ¬ν)
- μΈμ κ³ μ
- μ 보 λ ΈμΆ (μ νμ )
- λλ²κ·Έ μ 보 λ ΈμΆ
- 보μ ν€λ λλ½
- λ²μ μ 보 λ ΈμΆ
// β μλͺ»λ μ
public User getUser(String id) {
return repository.findById(id);
}
// β
μ¬λ°λ₯Έ μ
public User getUser(String id) {
if (!isValidUserId(id)) {
throw new IllegalArgumentException("Invalid user ID");
}
return repository.findById(id);
}// β μλͺ»λ μ
String query = "SELECT * FROM users WHERE id = " + userId;
// β
μ¬λ°λ₯Έ μ (Prepared Statement μ¬μ©)
@Query("SELECT u FROM User u WHERE u.id = :userId")
User findByUserId(@Param("userId") Long userId);// β μλͺ»λ μ
log.info("User login: " + username + ", password: " + password);
// β
μ¬λ°λ₯Έ μ
log.info("User login attempt: {}", username);// λΉλ°λ²νΈλ νμ ν΄μν
@Service
public class PasswordService {
private final BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
public String hashPassword(String rawPassword) {
return encoder.encode(rawPassword);
}
}λ°°ν¬ μ νμΈμ¬ν:
- λͺ¨λ μ¬μ©μ μ λ ₯μ΄ κ²μ¦λλκ°?
- SQL Injection μ·¨μ½μ μ΄ μλκ°?
- XSS μ·¨μ½μ μ΄ μλκ°?
- CSRF 보νΈκ° νμ±νλμ΄ μλκ°?
- λ―Όκ°ν μ λ³΄κ° λ‘κ·Έμ κΈ°λ‘λμ§ μλκ°?
- API ν€μ μν¬λ¦Ώμ΄ νκ²½λ³μλ‘ κ΄λ¦¬λλκ°?
- HTTPSκ° κ°μ λλκ°?
- 보μ ν€λκ° μ€μ λμ΄ μλκ°?
- μμ‘΄μ±μ΄ μ΅μ λ²μ μΈκ°?
- μλ¬ λ©μμ§κ° λ―Όκ°ν μ 보λ₯Ό λ ΈμΆνμ§ μλκ°?
보μ μ·¨μ½μ μ μ± μκ° μκ² μ κ³ ν΄ μ£Όμ μ°κ΅¬μλ€κ» κ°μ¬λ립λλ€:
- [μ°κ΅¬μ μ΄λ¦] - [μ·¨μ½μ μ ν] (λ μ§)
- (λͺ©λ‘μ κΈ°μ¬κ° μμ λ μ λ°μ΄νΈλ©λλ€)
μ°λ¦¬λ μ± μκ° μλ κ³΅κ° μμΉμ λ°λ¦ λλ€:
- μ·¨μ½μ μ κ³ μ μ
- μ·¨μ½μ νμΈ λ° μ¬ν
- ν¨μΉ κ°λ° λ° ν μ€νΈ
- ν¨μΉ 릴리μ€
- κ³΅κ° λ°ν (μ κ³ μμ νμ ν)
- 보μν μ΄λ©μΌ: [email protected]
- μΌλ° λ¬Έμ: [email protected]
- κΈ΄κΈ μ°λ½μ²: [μ 곡 μμ ]
μ΄ λ³΄μ μ μ± μ μ κΈ°μ μΌλ‘ κ²ν λκ³ μ λ°μ΄νΈλ©λλ€.
λ§μ§λ§ μ λ°μ΄νΈ: 2025-08-21