일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 체마1등
- 주작의용천제일검
- 수지
- 폭선우의무덤
- 모바일바람의나라
- 나스닥
- Eminem
- 매드클라운
- 걸스데이
- 피렌체
- 어린궁기
- 레어닉
- 2차승급
- 바람의나라
- 2차신수
- 매일영어단어외우기
- 바람의나라연
- 타라옷
- 돌림판이벤트
- 에미넴
- 영어단어
- 보물수호
- 북천황의감옥
- 페그오
- 매일영어단어
- 미국주식
- 페이트그랜드오더
- 일본패치
- 막피범
- 아이유
- Today
- Total
티스의 이야기
PHP-패스워드 해시화 본문
패스워드를 해시화하고 싶을 때
password_hash() 함수를 사용하면 간단히 패스워드를 해쉬화할 수 있습니다.
* 패스워드의 해시화란?
패스워드의 해시화란, 패스워드를 해시 함수로 처리하는 것으로, 패스워드를 보호하기 위한 방법 중 하나입니다.
해시화하지 않은 그대로의 패스워드를 데이터베이스나 파일에 저장했을 경우 데이터를 해킹당하는 것이 곧 패스워드를 해킹당하는
것이 되는데, 이것은 즉석에서 애플리케이션이 탈취당하는 것을 의미합니다. 또한 사용자가 다른 서비스에서도 같은 패스워드를 사용하면 피해가 더욱 확대됩니다. 패스워드를 해시화하여 저장하면 데이터가 해킹해도 공격자가 원래의 패스워드를 알기가 어려워집니다.
해시화된 패스워드를 구하는 스크립트(password_hash)
<?php
// PHP 5.5 이전의 환경(5.3.7 이후)에서도 password_hash() 함수를 사용할 수 있게 합니다.
require_once '../../../../lib/password_compat/password.php';
// h() 함수 레시피 218를 불러옵니다 레시피 041.
require_once '../../../../lib/h.php';
if (isset($_POST['submit'])) {
$password = $_POST['password'];
// 해시 처리의 계산 비용을 지정하고 솔트는 자동으로 생성됩니다.
$options = array('cost' => 10);
// 해시화 방식에 PASSWORD_DEFAULT를 지정하고 패스워드를 해시화합니다.
$hash = password_hash($password, PASSWORD_DEFAULT, $options);
}
?>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>해시화 후 패스워드를 구하는 스크립트</title>
</head>
<body>
<div>
<?php
if (isset($hash)) {
echo '해시화 전 패스워드: ' . h($password) . '<br>';
echo '해시화 후 패스워드: ' . h($hash);
}
?>
<hr>
<form action="password_hash.php" method="post">
<label for="password">해시화하고 싶은 패스워드 문자열 : </label>
<input type="text" name="password" id="password" value="">
<input type="submit" name="submit" value="해시화">
</form>
</div>
</body>
</html>
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
패스워드의 대조 -> password_verify() 함수를 사용합니다.
// PHP 5.5보다 이전 환경(5.3.7 이상)에서도 password_verify() 함수를 사용할 수 있습니다.
require_once '../../../../lib/password_compat/password.php';
// 입력된 패스워드 문자열과 해시화된 패스워드를 대조합니다.
// 대조한 후 매치하면 true를, 그 외의 경우에는 false를 반환합니다.
$auth = password_verify($password, $hash);
'프로그래밍' 카테고리의 다른 글
URL의 일부분에 한국어 사용 (0) | 2016.06.30 |
---|---|
안전하게 브라우저에서 값을 표시할때 (0) | 2016.06.30 |
PHP-yyyy/mm/dd 형식의 날짜를 이용 (0) | 2016.06.29 |
PHP-복수 선택한 데이터 검색하기 (0) | 2016.06.27 |
MS-SQL 문법정리 select 문 (0) | 2016.06.24 |