📚 PHP 중급 - 8주차: 웹 보안 기초 및 에러 핸들링- 02 비밀번호 보안 (해싱, 솔팅)

2025. 8. 14. 22:59프로그램/PHP 중급

📚 PHP 중급 - 8주차: 웹 보안 기초 및 에러 핸들링- 02 비밀번호 보안 (해싱, 솔팅)

📚 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