일일 정리

네트워크 구성 실습, HTML / PHP 폼

mysecurity 2025. 2. 14. 23:17

목차

1. 네트워크 구성 실습

1-1 다른 네트워크 대역 PC 생성

1-2 router 리눅스 설정

 

2. HTML / PHP 폼

2-1  폼 태그 구조

2-2 데이터 전달 방식과 변수

2-3 다양한 input type 폼 태그

 

 

1. 네트워크 구성 실습

1-1 다른 네트워크 대역 PC 생성

현재 실습에서 구성된 네트워크 망은 다음과 같다.

 

Ethernet : 192.168.10.0/24 

NAT       : 192.168.11.0/24, 192.168.12.0/24

 

이전 실습에서 11번대 네트워크와 12번대 네트워크 사이에 위치한 라우터를 생성하였다.

추가적인 실습을 위해 NAT 네트워크 11번대와 12번대에 각각 하나씩 추가로 컴퓨터를 생성한다.

192.168.11.0/24 대역 컴퓨터 ifconfig 실행 화면

 

192.168.12.0/24 대역 컴퓨터 ficonfig 실행 화면

 

1-2 router 리눅스 설정

11번대 네트워크는 호스트 PC와 붙어있어 외부로 핑을 보낼 수 있으나 12번대 네트워크는 새로 생성한 라우터로 인해 연결되어있다.

컴퓨터는 기본적으로 자신을 통해서 패킷이 흐르는 것을 막아놓으므로 새로 생성한 라우터는 다음 그림과 같이 라우팅 기능을 수행하지 못하는 것을 확인할 수 있다. 

 

외부와의 통신이 안되는 모습

 

라우터로써의 기능을 살리기 위해 이전 실습에서 생성한 라우터에 다음과 같은 설정을 한다.

 

- 방화벽을 disable 한다.

# systemctl disable firewalld.service

# systemctl stop firewalld.service

 

- Selinux를 disable 한다.

/etc/selinux/config 파일의 SELINUX=enforcing → SELINUX=disabled

수정 후 재부팅하여 설정을 적용시킨다.

 

- 패킷 포워딩 기능을 활성화한다. (커널 파라미터를 수정하는 작업이다.)

# sysctl ‐a | grep forward

# sysctl ‐w net.ipv4.ip_forward=1 (공백없음)

or

# echo 1 > /proc/sys/net/ipv4/ip_forward

or

재부팅을 해도 설정이 유지되기를 원할 경우

/etc/sysctl.conf 파일에 net.ipv4.ip_forward = 1 을 수정(추가)한다.

파일 추가 후 sysctl ‐p 명령을 실행하여 설정을 커널에 저장한다.

 

외부와의 통신이 되는 모습

 

2. HTML / PHP 폼

2-1  폼 태그 구조

폼 태그 구조는 다음과 같다.

<form name="폼 이름" action="프로그램명"  method="전달 방식"
                      [target="대상 윈도우"]  [enctype="인코딩 형식"]>  
입력 양식
......
 </form>

 

name : 폼의 이름을 지정한다.

action : 입력될 값이 전달될 URL을 정의한다.

method : 입력 값의 전달 방식을 정의한다. (POST, GET)

target : 입력값을 전달할 URL을 출력할 창을 지정한다.

enctype : 입력된 데이터를 인코딩하는 방법을 정의한다.

 

2-2 데이터 전달 방식과 변수

품에 의해서 입력된 데이터는 PHP 프로그램으로 전달될 때 특별한 변수에 저장되어 전달된다. 특별한 변수는 폼에 정의한 method에 의해서 결정된다. method에는 주로 GET와 POST방식이 사용된다

 

● GET 방식

GET 방식은 입력 값을 action에 지정한 URL에 첨가하여 전달하는 방식이다. POST 방식에 비해 넣을 수 있는 데이터 양이 적다.

예제는 다음과 같다.

// GET 예제 HTML

<html><head><title>GET 예제</title></head><body>
<form name="get_ex" action="4-1.php" method="get">
<p><input type="text" name="text"><input type="submit" name="확인" value="확인"></p>
</form>
</body></html>



// GET 예제 PHP

<?
 $text = $_GET['text'];    
 echo("전달된 값은 {$text}입니다.");
?>

 

GET 방식의 경우 폼의 형태가 아니더라도 링크의 형태로 전달이 가능하다.

다음과 같이 a.php에서 변수의 값을 b.php의 변수의 값으로 유지시키도록 전달해줄 수 있다.

// GET 예제 a.php

 <?
  $a = 1;
  echo("₩$a = {$a}<br>
        <a href=./b.php?a=$a>b.php</a>");  // <a href=./b.php?a=1>b.php</a>
 ?>



// GET 예제 b.php

<?
  $a = $_GET["a"];
  echo("₩$a = {$a}");
 ?>

 

이러한 방식이 네이버와 같은 곳에 로그인 한 상태에서 네이버의 다른 서비스로 들어가도 로그인 된 상태가 유지되도록 하는 원리이다. 그러나 실제로 GET 방식을 이용하면 보안상의 위협이 있으므로 실제로는 다른 방식을 사용한다.

 

2-3 다양한 input type 폼 태그

text와 password

text 타입은 글자가 입력한 그대로 화면에 출력되며, password 타입은 글자가 가려진 모습(별표나 점 같은 모습)으로 화면에 출력된다.

텍스트와 패스워드 폼 태그 구조는 다음과 같다.

<input type="text" || "password" name="전달 변수명" maxlength="입력크기" 
                              size="창크기" value="미리 입력된 값">

 

name : action에 정의된 URL로 전달될 변수명이다.

maxlength : 입력 한계를 지정하며 기본 값은 제한이 없다.

size : 입력 창의 길이를 지정하며 기본 값은 20이다.

value : 초기 입력 창에 미리 입력될 기본 값을 지정한다.

 

예제는 다음과 같다.

// input type text와 password 예제 HTML

<html>
<head>
<title>Input type text와 password</title>
</head>
<body>
<form name="tx_pw" action="4-4.php" method="post">
 이름 : <input type="text" name="id" size="8"><br>
 암호 : <input type="password" name="pw" size="8"><br>
 <input type="submit" name="확인" value="확인">
</form>
</body>
</html>



// input type text와 password 예제 PHP

<?
 echo(" 이름은 {$_POST['id']}입니다.<br>
        암호는 {$_POST['pw']}입니다.");
?>

 

input type radio

radio 타입은 체크박스를 제공한다. 단, 체크박스가 여러 개 있더라도 하나만 선택이 가능하다.

라디오 타입의 폼 태그 구조는 다음과 같다.

<input type="radio" name="전달 변수명" value="전달될 값" [checked]>

 

name : action에 정의된 URL로 전달될 변수명이다.

value : 전달될 값을 지정한다.

checked : 기본 선택 항목으로, 원하는 항목에 checked를 입력하면 기본적으로 해당 항목이 선택된 상태로 출력된다.

 

예제는 다음과 같다.

 // input type radio 예제 HTML
 
 <html><head><title>Input type radio</title></head><body>
 <form name="radio" action="4-5.php" method="post">
  1<input type="radio" name="rd" value="1" checked>,  // 선택영역 내에서 name이 
  2<input type="radio" name="rd" value="2">,          // 모두 동일해야 한다.
  3<input type="radio" name="rd" value="3">,
  4<input type="radio" name="rd" value="4">,
  <input type="submit" name="확인" value="확인">
 </form>
 </body></html>
 
 
 
 // input type radio 예제 PHP
 
 <?
  echo(" 선택한 값은 {$_POST['rd']}입니다.");
 ?>

 

input type checkbox

checkbox 타입은 체크박스를 제공하지만 radio 타입과 달리 여러 개를 체크할 수 있다.

체크박스 타입의 폼 태그 구조는 다음과 같다.

<input type="checkbox" name="전달 변수명" value="전달될 값" [checked]>

 

name : action에 정의된 URL로 전달될 변수명이다.

value : 전달될 값을 지정한다.

checked : 기본 선택 항목으로, 원하는 항목에 checked를 입력하면 기본적으로 해당 항목이 선택된 상태로 출력된다.

 

예제는 다음과 같다.

 //  input type chechbox 예제 HTML
 
 <html><head>
 <title>Input type chechbox</title>
 </head>
 <body>
 <form name="chechbox" action="4-6.php" method="post">
  1<input type="checkbox" name="cb1" value="1" checked>,  // name이 반드시 달라야 한다.
  2<input type="checkbox" name="cb2" value="1">,
  3<input type="checkbox" name="cb3" value="1">,
  4<input type="checkbox" name="cb4" value="1">,
  <input type="submit" name="확인" value="확인">
 </form>
 </body>
 </html>
 
 
 
 // input type chechbox 예제 PHP
 
 <?
  echo(" cb1은 {$_POST['cb1']}입니다.<br>
         cb2은 {$_POST['cb2']}입니다.<br>
         cb3은 {$_POST['cb3']}입니다.<br>
         cb4은 {$_POST['cb4']}입니다.");
 ?>

 

TEXTAREA

TEXTAREA 타입은 문자를 입력할 영역을 지정하는 것으로 여러 줄을 한 번에 입력받을 수 있다.

텍스트아리아 타입의 폼 태그 구조는 다음과 같다.

<textarea name="전달 변수명"  rows="행수" cols="너비">초기값</textarea>

 

name : action에 정의된 URL로 전달될 변수명이다.

row : Text 박스의 높이를 지정한다. 그저 초기값일 뿐으로 입력글의 행이 길어지면 창은 계속 늘어난다.

cols : Text 박스의 너비를 지정한다.

초기값 : 초기에 박스내에 출력할 문자열이 있다면 지정한다.

 

예제는 다음과 같다.

 // Textarea 예제 HTML
 
 <html>
 <head>
 <title>Textarea</title>
 </head>
 <body>
 <form name="textarea" action="4-9.php" method="post">
  <textarea name="tarea" rows="5" cols="30"></textarea><br>
  <input type="submit" name="확인" value="확인">
 </form>
 </body>
 </html>
 
 
 
 // Textarea 예제 PHP
 <?
  $tarea = $_POST["tarea"];
  $tarea = nl2br($tarea);
  echo("$tarea");
 ?>

 

nl2br : 브라우저에서는 개행 문자를 인식하지 못하므로 nl2br로 개행 코드를 인식시킨다.

 

SELECT

SELECT 타입은 선택지를 목록 형태로 출력한다.

셀렉트 타입의 폼 태그 구조는 다음과 같다.

 <select name="전달 변수명" size="행수" [mutiple]>
    <option value="전달될 값">출력값</option>
     ......
 </select)

 

name : action에 정의된 URL로 전달될 변수명이다.

size : 한번에 보여지는 구간을 지정한다.

multiple : 여러 개를 선택할 수 있다.

value : 변수에 전달될 값을 지정한다.

출력값 : 박스내에 출력할 문자열을 지정한다.

 

예제는 다음과 같다.

 //  select 태그 예제 HTML
 <html>
 <head>
 <title>Select</title>
 </head>
 <body>
 <form name="select" action="4-10.php" method="post">
  <select name="select" size="1">
    <option value="1">1번</option>
    <option value="2">2번</option>
    <option value="3">3번</option>
  </select>
  <input type="submit" name="확인" value="확인">
 </form>
 </body>
 </html>



 // select 태그 예제 PHP
 <?
  $select = $_POST["select"];
  echo("선택된 값은 {$select}입니다.");
 ?>