웹 Request 파라미터 암호화 방법 | JavaScript Base64 인코딩 & Java 복호화 완벽 정리
JavaScript에서 Base64로 간단 암호화하고, Java 서버에서 안전하게 복호화하는 방법
📌 Base64를 사용하는 이유는?
웹(Web) 환경에서 Request 파라미터(parameter)를 서버로 전송할 때 URL에 그대로 노출되는 경우가 많습니다. 이때 사용자 정보, 식별값, 내부 코드값 등을 그대로 전달하면 보안상 문제가 될 수 있습니다.
⚠️ 주의: Base64는 완전한 암호화(Encryption)가 아닙니다. 단순 인코딩(Encoding) 방식이며, 복호화가 매우 쉽습니다.
하지만 URL 상에서 사람이 바로 해석하기 어렵게 만드는 용도로는 충분히 활용 가능합니다.
실제 강력한 보안이 필요하다면 RSA, AES 같은 암호화 알고리즘을 사용해야 하지만, 단순 파라미터 보호 목적이라면 Base64 인코딩이 가장 간단하고 빠른 방법입니다.
🚀 JavaScript에서 Request 파라미터 Base64 암호화
브라우저에서 JavaScript를 이용해 파라미터를 Base64로 인코딩하는 방법입니다. 한글이 포함될 경우 반드시 encodeURIComponent() 처리를 먼저 해야 합니다.
사용 함수 정리
- btoa() : Base64 인코딩
- atob() : Base64 디코딩
- encodeURIComponent() : UTF-8 안전 인코딩 (한글 필수)
var parameter = 'abc가나다123!@#'; // 한글 처리를 위해 encodeURIComponent 적용 후 Base64 인코딩 parameter = btoa(encodeURIComponent(parameter)); console.log(parameter); // 결과: YWJjJUVBJUIwJTgwJUVCJTgyJTk4JUVCJThCJUE0MTIzISU0MCUyMw==
위와 같이 처리하면 URL에 다음과 같이 적용할 수 있습니다.
example.com?data=YWJjJUVBJUIwJTgwJUVCJTgyJTk4JUVCJThCJUE0MTIzISU0MCUyMw==
이렇게 하면 사용자가 주소창에서 바로 내용을 확인하기 어렵습니다.
⚙️ Java 서버에서 Base64 복호화 (Decryption)
이제 서버(Java)에서 해당 값을 복호화해야 합니다. Java 8 이상에서는 java.util.Base64 클래스를 사용하면 간단하게 처리할 수 있습니다.
사용 클래스
- Base64.getDecoder().decode() : Base64 디코딩
- URLDecoder.decode() : encodeURIComponent 복원
import java.net.URLDecoder;
import java.util.Base64;
String parameter = "YWJjJUVBJUIwJTgwJUVCJTgyJTk4JUVCJThCJUE0MTIzISU0MCUyMw==";
// Base64 디코딩 후 URL 디코딩
parameter = URLDecoder.decode(
new String(Base64.getDecoder().decode(parameter), "UTF-8"),
"UTF-8"
);
System.out.println(parameter);
// 출력: abc가나다123!@#
💡 실무 적용 시 주의사항
- Base64는 암호화가 아닌 인코딩입니다.
- 민감한 개인정보 전송에는 절대 단독 사용 금지
- HTTPS 환경에서는 반드시 SSL/TLS 적용
- 보안이 중요하다면 AES, RSA 등 실제 암호화 알고리즘 사용
JavaScript Base64 인코딩 + Java Base64 디코딩 방식은 가장 가볍고 빠르게 적용할 수 있는 Request 파라미터 보호 방법입니다.
웹 개발, 스프링(Spring) 서버, JSP 프로젝트, REST API 설계 시 간단한 파라미터 보호가 필요하다면 위 방법을 활용해 보세요.
댓글
댓글 쓰기