본문 바로가기

분류 전체보기23

SQL Injection ( 인증 우회 ) 식별/인증 동시방식 SQL Injection의 개념 SQL 인젝션은 코드 인젝션의 한 기법으로 임의의 SQL 문을 주입하고 실행되게 하여 데이터베이스가 비정상적인 동작을 하도록 하거나 필요한 정보를 획득하기 위해 하는 공격방식 인증우회 ID, password를 입력하는 페이지를 타겟으로 하는 공격으로 정상적인 계정정보 없이 인증을 통과할 수 있다. 주로 쿼리의 필터링 조건의 논리를 True로 만들어 쿼리를 무력화 하는 방법을 사용한다. 예를 들어 위와 같이 식별과 인증을 한번에 처리하는 쿼리문의 로그인 페이지가 있다고 생각해보자. 아이디와 비밀번호에 ' or '1 , ' or '1 를 넣어 쿼리문이 참이되게 하여 인증을 무력화 하고 들어갈 수도 있으며, ' or 1=1# 을 아이디에 넣어 쿼리문을 참으로 만들어 주고 뒤의 .. 2021. 10. 30.
sha256 해쉬로 로그인 구현하기 이전에 사용하던 password_hash는 시간에 따라 달라지는 알고리즘을 갖고 있어, 유저가 로그시기에 입력한 비밀번호와 회원가입시 시간이 달라, 식별/인증 동시 방식으로비교할 수 가 없어 sha256해쉬로 변경하게 되었다. $hashPw = password_hash($userPw, PASSWORD_DEFAULT); 이전 위의 코드에서 $hashPw = hash("sha256", $userPw); 이렇게 변경만 해주면 가능했다. where조건문에 아이디, 패스워드 동시방식으로 셀렉트 가능했으며 아이디에 해당하는 패스워드만 조회해 php코드안에서 비교하는 것 둘다 가능했다. 이전의 password_hash는 시간에 따라 값이 변하기 때문에 php 코드상에서 password_verify()를 통해 값을 검.. 2021. 10. 28.
로그인 인증 비밀번호 해시 ( password_verify ) 추후에 sql 인젝션 정보보안 관련해서 공부를 위해, 많이 쓰이는 로그인 방식을 5가지 케이스 별로 구현하고 있는중이다. 1. 식별/인증 동시방식 - 한번의 sql문으로 디비에서 아이디를 식별하고, 비밀번호를 DB에서 인증하는 방식 2. 식별/인증 분리방식 - sql문으로 디비에서 아이디로 비밀번호를 가져와 코드내부에서 인증하는 방식 3. 식별/인증 동시방식 ( 해쉬처리 ) - 1번에서 비밀번호가 해쉬처리 된것 4. 식별/인증 분리방식 ( 해쉬처리 ) - 2번에서 비밀번호가 해쉬처리 된것 5. 식별/인증 동시방식 ( 개행 ) - sql문이 한줄로 되어 있지않고 엔터 처리된 코드( 인젝션 공격에서 뒤를 주석처리하는 기법이 불가능한 구현방식 ) 이전글에서 password_hash api를 통해 회원가입을 구.. 2021. 10. 27.
패스워드 해쉬처리( password_hash ) 캐이스별 인증 방식 중에 해쉬처리된 비밀번호가 필요해 회원가입 페이지를 만들어 보았다. 서버와 디비 연결은 이전 글에도 설명이 되어 있으니 넘어가고, 필요했던 코드만 작성해 본다. $hashPw = password_hash($userPw, PASSWORD_DEFAULT); password_hash는 PHP버전 5.5부터 사용 가능한 API이며, 뒤에 PASSWORD_DEFAULT 부분은 bcrypt 알고리즘을 사용하며, 여러 옵션들을 통해 다른 알고리즘을 사용할 수 있다. $mSql = "select id from member where id = '".$userId."';"; $result = mysqli_query( $mysqli , $mSql ); while ($rows = mysqli_fetch_a.. 2021. 10. 26.