2019/12/08
[PHP] How To Prevent SQL injection attack via secure code
[PHP] How To Prevent SQL injection attack via secure code
2019.12.08php언어를 통해 SQL injection 공격을 막기 위해 안전한 코드를 짜야한다. 우선 mysqli 함수를 통해 DB에 접근하기 위한 코드는 아래와 같다. 위 코드를 db.php 파일이라고 정의하고, 이 파일을 include 하여 사용한다. mysqli의 PDO는 prepare라는 함수를 가지고 있다. 이것을 이용하여 안전하게 DB에 접근하여 값을 가져오거나 등등의 작업을 할 수 있다. INSERT 아래 예제는 user라는 테이블에 id와 pw를 Insert 하는 과정을 나타낸 것이다. 우선 $mysqli 변수를 쓰기 위해 db.php 파일을 include 하고 prepare 함수를 사용한다. 만약 prepare 함수에서 query에 에러 발생 시 $mysqli->error를 통해 에러를 출력한다. ..
[PHP] password_hash와 password_verify로 패스워드 안전하게 관리하기
[PHP] password_hash와 password_verify로 패스워드 안전하게 관리하기
2019.12.08DB에 패스워드를 안전하게 저장하기 위해서는 단방향 해시 함수를 사용하게 된다. 이유는 DB가 외부로 유출 되었을 때, 패스워드의 평문을 알아내기 어렵게 하기 위해서 이다. php에서 사용자의 패스워드를 해시 해주는 password_hash() 함수와, 사용자가 입력한 패스워드랑 해시된 패스워드를 비교해주는 password_verify() 함수가 있다. password_hash() password_hash()는 2개의 인자가 필요하다. 첫번재 인자는 해시할 패스워드, 두번째는 암호 알고리즘이다. Return 값은 해시 과정에서 에러 발생 시 false, 성공하면 문자열의 해시 값을 준다. password_hash ( string $password , int $algo [, array $options ] ..