해시(hash)함수와 보안

유영·2023년 3월 7일
0

PHP

목록 보기
47/57

해시 함수

hash 함수 원형

string hash ( string $algo , string $data [, bool $raw_output = false ] )
인자는 기본적으로 2개가 들어가며 추가적으로 결과 반환에 대한 부분을 설정할 수 있다.
$algo : 해시 알고리즘 (md5, sha256 ...)
$data : 해시 알고리즘을 적용할 데이터
$raw_output : TRUE일 경우 바이너리 데이터로 결과 반환, FALSE일 경우 소문자 hex 값으로 반환

예제

 $password = hash('sha256', $password, true); 

[출처][PHP] hash 함수(해시 함수) 사용하기|작성자 크리핵티브


hash_algos — 등록된 해싱 알고리즘 목록 반환
hash_copy — 해싱 컨텍스트 복사
hash_equals — 타이밍 공격 안전 문자열 비교
hash_file — 주어진 파일의 내용을 사용하여 해시 값 생성
hash_final — 증분 해시를 마무리하고 결과 다이제스트를 반환합니다.
hash_hkdf — 제공된 키 입력의 HKDF 키 파생 생성
hash_hmac_algos — hash_hmac에 적합한 등록된 해싱 알고리즘 목록을 반환합니다.
hash_hmac_file — HMAC 방법과 주어진 파일의 내용을 사용하여 키가 있는 해시 값을 생성합니다.
hash_hmac — HMAC 방법을 사용하여 키 해시 값 생성
hash_init — 증분 해싱 컨텍스트 초기화
hash_pbkdf2 — 제공된 암호의 PBKDF2 키 파생 생성
hash_update_file — 파일에서 활성 해싱 컨텍스트로 데이터 펌프
hash_update_stream — 오픈 스트림에서 활성 해싱 컨텍스트로 데이터를 펌핑합니다.
hash_update — 데이터를 활성 해싱 컨텍스트로 펌프
hash — 해시 값 생성(메시지 다이제스트)

ob_start()

"output buffering start → 출력 버퍼링 시작"
출력 버퍼링을 켜는 PHP 명령어

출력 버퍼링이 켜져 있는 동안 헤더를 제외한 스크립트의 모든 출력을 내부 버퍼에 저장하며 실제 전송하지 않는다.
ob_start()를 여러번 호출해도 오류는 발생하지 않는다.

session_save_path

— 현재 세션 저장 경로 가져오기 및/또는 설정


보안

  1. site scripting
    script 태그를 주입시키는 공격

=>php 내장함수인
htmlspecialchars() 함수를 활용
이 함수는 문자열에서 특정한 특수 문자를 HTML 엔티티로 변환한다.
이함수를 사용하면 악성 사용자로 부터 XSS 공격을 방지 할 수 있다.

변환되는 문자는 아래와 같다.

특수 문자변환된 문자
&(앰퍼샌드)&
""(겹따옴표)"
''(홑따옴표)'
<(미만)<
>(이상)>

  1. 개발자창- network -preserve log 에서
    서버와 주고받는 정보 쌓아둠
    파일경로를 알아내서 공격 가능

=>링크를 걸 때에 basename(파일명)으로 가둬야 안전

  1. 파일경로가 노출되면
    ../를 이용하여 정보를 알아낼 수 있음

=>basename()활용하면 "../"를 쳐낼 수 있다.
변수를 하나 추가하여 사용하면 좋다.

ex. $basename = basename($_GET['id']) ;

0개의 댓글