The Pursuit of Happyness

해시화 +1
반응형

PHP 모범 사례 2


http://www.hanbit.co.kr/book/look.html?isbn=978-89-6848-225-0

- 비밀번호 관리

-- DB가 해킹당해도 비밀번호를 알 수 없게 평문이나 복호화가 가능한 비밀번호를 저장하지 말 것

-- 비밀번호에 제한을 두지 말 것

-- 비밀번호를 절대 이메일로 보내지 말 것

-- bcrypt로 해시화 할 것

암호화 NO, 해시화 YES!

해싱 알고리즘 (MD5, SHA1, bcrypt, scrypt ...)

bcrypt - 단점은 느린 속도. 레인보우 테이블 공격을 저지하기 위해 데이터에 솔트를 추가한다.

password_hash() 함수를 사용하면 default로 bcrypt 해싱 알고리즘을 사용한다. (참고 password_verify(), password_needs_rehash())


- 날짜, 시간, 시간대

-- 기본 시간대 지정

php.ini 파일에 date.timezone 항목을 설정한다.

혹은 date_default_timezone_set() 함수를 이용해서 설정한다.


-- DateTime 클래스

-- DateInterval 클래스, DatePeriod 클래스

DateTime 클래스를 조작하기 위해서 사용된다.


ex)


<?php

$datetime = new DateTime();    // create DateTime instance 


$interval = new DateInterval('P2W');    // Period of 2 weeks


$datetime->add($interval);

echo $datetime->format('Y-m-d H:i:s');


$dateInterval = DateInterval::createFromDateString('-1 day');

$datePeriod = new DatePeriod($datetime, $dateInterval, 3);    // 3 periods

foreach ($datePeriod as $date) {

    echo $date->format('Y-m-d') . PHP_EOL;

}



주) 예전에는 strtotime 을 이용해서 date을 변경해 가면서 for 문을 돌렸는데, 조금 더 직관적인 방법이 되었네요..



반응형