일일 정리

PHP - SALT 값, 논리 모델링 구성 실습

mysecurity 2025. 3. 28. 17:35

목차

1. PHP - SALT 값

1-1 SALT 개요

1-2 SALT 값을 이용한 패스워드 저장

 

2. 논리 모델링 구성 실습

2-1 문서별 논리 모델링 작성

 

 

1. PHP - SALT 값

1-1 SALT 개요

솔트는 패스워드를 해싱할 때 패스워드 뒤에 임의의 값(솔트 값)을 붙여 같이 해싱하는 것으로, 여러 사용자의 비밀번호가 같더라도 해시코드는 다르게 생성할 수 있다.

 

솔트 값이 없는 상태에서 패스워드에 솔트 값을 붙이는 방법으로 다음 두 가지가 있다.

- 사용자 계정이 저장된 테이블에 솔트 컬럼을 추가하여 패스워드에 붙여 해시코드 생성

- 식별자를 패스워드에 붙여 해시코드 생성

 

정석은 솔트 컬럼을 추가하는 방식이나, 급한 경우 식별자를 솔트 값으로 이용하여 해시코드를 생성할 수 있다.

 

1-2 SALT 값을 이용한 패스워드 저장

사용자의 아이디를 솔트 값으로 이용하도록 다음과 같이 프로그램을 개선할 수 있다.

기존 코드에서 패스워드만을 해싱하던 모든 부분은 아이디까지 함께 해싱하도록 한다.

// 계정 등록 php //

<html>
    <head>
        <title>id.php</title>
        <meta http-equiv="content-type" content="text/html; charset=utf-8">
    </head>
<body>
<?  
  require('conn.php');  
  
  $id = $_POST["id"];  
  $password = $_POST["passwd"];
  $sql="insert into id (id, passwd) 
        values ('$id', RAWTOHEX(STANDARD_HASH('$password'||'$id', 'SHA256')))";
        
                       
  $result=oci_parse($conn,$sql);
  $re=@oci_execute($result);                      
  oci_free_statement($result);
  oci_close($conn);
  
   . . .

 

 

// 로그인 php //

<html>
    <head>
        <title>check.php</title>
        <meta http-equiv="content-type" content="text/html; charset=utf-8">
    </head>
<body>
<?  
  session_start();
  require('conn.php');  
  
  $id = $_POST["id"];  
  $passwd = $_POST["passwd"];
  $sql="select * from id 
      where id = '$id'
      and passwd = RAWTOHEX(STANDARD_HASH('$passwd'||'$id', 'SHA256'))";
  $result=oci_parse($conn,$sql);
  $re=oci_execute($result);
  $row_num=oci_fetch_all($result,$row); 
  oci_free_statement($result);
  oci_close($conn);
  
   . . .

 

 

// st_vi.php 개선//

<html>
    <head>
        <title>st_vi.php</title>
        <meta http-equiv="content-type" content="text/html; charset=utf-8">
    </head>
<body>
<?
  session_start();
  
  
  if(empty($_GET["logout"])){}
  else session_unset();    
  
  require('conn.php');

  $id = $_SESSION["id"];
  $passwd = $_SESSION["passwd"];
  
  $sql="select * from id 
        where id = '$id' 
        and passwd = RAWTOHEX(STANDARD_HASH('$passwd'||'$id', 'SHA256'))";
  $result=oci_parse($conn,$sql);
  $re=oci_execute($result);
  $row_num=oci_fetch_all($result,$row);
  
   . . .

 

2. 논리 모델링 구성 실습

2-1 문서별 논리 모델링 작성

● 인사기록카드 논리 모델링 작성

인사기록카드 문서
인사기록카드 논리 모델링

 

● 판매전표 논리 모델링 작성

판매전표 문서

 

판매전표 논리 모델링

 

● 거래처관리 논리 모델링 작성

거래처대장 문서

 

거래처대장 논리 모델링

 

● 차량운행일지 논리 모델링 작성

차량운행일지 문서

 

차량운행일지 논리 모델링

 

● 네 가지 항목 통합 논리 모델링 작성

통합 논리 모델링