2025. 8. 14. 22:59ㆍ프로그램/PHP 중급
📚 PHP 중급 - 8주차: 웹 보안 기초 및 에러 핸들링- 02 비밀번호 보안 (해싱, 솔팅)

안녕하세요. 이번 시간에는 웹 개발에서 가장 중요한 #보안 중 하나인 #비밀번호 관리에 대해 알아보겠습니다. 사용자 #개인정보를 안전하게 지키는 것은 개발자의 기본적인 의무입니다.
왜 #비밀번호를 그대로 저장하면 안 될까요?
사용자가 회원가입 시 입력한 #비밀번호를 데이터베이스에 그대로 저장하는 것은 매우 위험합니다. 만약 데이터베이스가 유출된다면, 모든 사용자의 #비밀번호가 그대로 노출되기 때문입니다. 따라서 #비밀번호는 암호화하여 저장해야 합니다.
#비밀번호 #해싱이란?

#해싱은 #비밀번호를 되돌릴 수 없는 고정된 길이의 문자열로 변환하는 단방향 암호화 기술입니다. 같은 #비밀번호를 해싱하면 항상 같은 결과가 나오지만, 원래의 #비밀번호를 알아낼 수는 없습니다. 과거에는 #MD5나 #SHA-1 같은 해시 함수를 많이 사용했지만, 요즘에는 보안에 취약해 사용하지 않습니다.
#솔팅이란 무엇이며 왜 필요할까요?

#솔팅은 해싱에 사용되는 #비밀번호에 임의의 문자열(#Salt)을 추가하는 기법입니다. 같은 #비밀번호를 해싱해도 #Salt 값이 달라지면 다른 해시 결과가 나오게 됩니다. #솔팅을 사용하는 가장 큰 이유는 #레인보우테이블 공격을 방어하기 위함입니다. #레인보우테이블은 미리 해싱된 #비밀번호와 해시 값을 담아둔 거대한 표인데, #솔팅을 하면 해시 값이 모두 달라져서 이 표를 무용지물로 만들 수 있습니다.
PHP의 강력한 #비밀번호 보안 함수
PHP 5.5 이상에서는 password_hash()와 password_verify()라는 내장 함수를 제공합니다. 이 함수들은 #해싱과 #솔팅을 한 번에 안전하게 처리해주므로, 직접 복잡한 로직을 만들 필요가 없습니다.

1. #비밀번호 #해싱
password_hash() 함수는 #비밀번호와 함께 임의의 #Salt 값을 생성하여 안전하게 해시 값을 만들어 줍니다.
$hashed_password = password_hash($user_password, PASSWORD_DEFAULT);
2. #비밀번호 검증
password_verify() 함수는 사용자가 입력한 #비밀번호와 저장된 해시 값을 비교하여 일치하는지 확인해줍니다.
if (password_verify($user_password, $hashed_password)) { // 로그인 성공 }
이 함수들을 사용하면 안전한 #비밀번호 관리가 가능합니다.
속도, 안정성 확실. 끊김없이 빠른 VPN. 고품질 브이피엔 무료체험!
https://xn--299ao67b9qbmsf04c.net/
VPN 5,500원 / IP교체 1,100원 / 유동프록시 22,000원 | LuzenVPN 루젠VPN
국내최저가 고정IP서비스,유동프록시(IP4000개이상제공),PPTP,L2TP,IPSec,OpenVPNVPN,통신사VPN,VPN프로그램,고정IP,고정아이피,PPTP,저렴한VPN,리니지MVPN,리니지VPN,아이온VPN,던파VPN,유동프록시,유동PROXY,바이
vpn.luzensoft.com
'프로그램 > PHP 중급' 카테고리의 다른 글
| 📚 PHP 중급 - 8주차: 웹 보안 기초 및 에러 핸들링 - 04 try-catch 예외 처리 (0) | 2025.08.17 |
|---|---|
| 📚 PHP 중급 - 8주차: 웹 보안 기초 및 에러 핸들링 - 03 에러 보고 및 로그 설정 (0) | 2025.08.16 |
| 📚 PHP 중급 - 8주차: 웹 보안 기초 및 에러 핸들링- 01 XSS, CSRF 공격 이해 및 방어 (0) | 2025.08.13 |
| 📚 PHP 중급 - 7주차: MVC 패턴의 이해 및 적용- 03 URL 라우팅 기초 (0) | 2025.08.11 |
| 📚 PHP 중급 - 7주차: MVC 패턴의 이해 및 적용- 02 간단한 MVC 구조로 게시판 리팩토링 (0) | 2025.08.10 |