[PHP] Modern PHP 요약 5
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 문을 돌렸는데, 조금 더 직관적인 방법이 되었네요..