[02] form, input, label, textarea, select, div, span, css, id, class, style, img

|


- 2015.03.10 웹보안

 

 

1. form tag


[기본]

 

<body>
 <form>
  <input type="text" name="search" />
  <input type="submit" />
 </form>
</body>

 


[form get 방식]


<body>
 <form method="get">
  <input type="text" name="search" />
  <input type="submit" />
 </form>
</body>

=> 주소에 입력해서 값을 보냄

 

 


[form post 방식]


<body>
 <form method="post">
  <input type="text" name="search" />
  <input type="submit" />
 </form>
</body>

=> 비밀스럽게 보냄

 

 

 


2. form - input type


<body>
 <form>
  <input type="text" name="search" /><br />
  <input type="password" name="password" /><br />
  <input type="file" name="file" /><br />
  <input type="submit" />
 </form>
</body>


아래 처럼 다양한 것을 확인해볼 수 있다.


<body>
 <form>
  <input type="text" /><br />
  <input type="botton" /><br />
  <input type="checkbox" /><br />
  <input type="file" /><br />
  <input type="hidden" /><br />
  <input type="image" /><br />
  <input type="password" /><br />
  <input type="radio" /><br />
  <input type="reset" /><br />
  <input type="submit" />
 </form>
</body>

 


3. form - label


<body>
 <form>
  <label>이름</label>
  <input type="text" /><br />
 </form>
</body>


보통은 아래처럼 많이 사용한다.


<body>
 <form>
  <label for="name">이름</label>
  <input id="name" type="text" /><br />
 </form>
</body>

 

 

 


4.textarea


<body>
 <form>

 <textarea>

      show me the money.

 </textarea>

</body>

 

 

 

 

5. select

 

<select multiple="multiple">
   <optgroup label="HTML 5">
      <option>김밥</option>
      <option>떡볶이</option>
      <option>순대</option>
      <option>오뎅</option>
   </optgroup>
   <optgroup label="CSS 3">
      <option>Animation</option>
      <option>3D Transform</option>
   </optgroup>
</select>

 

- optgroup 선택옵션을 묶을 때 사용

- select 에 multiple이라는 옵션을 주면 여러게 고를수 있다.
- 스마트폰에서 좀 더 정확히 볼 수 있다)

 

 

 

 

6. div && span

 

<body>

   <div>Lorem ipsum</div>
   <div>Lorem ipsum</div>
   <div>Lorem ipsum</div>

   <span>Lorem ipsum</span>
   <span>Lorem ipsum</span>
   <span>Lorem ipsum</span>

</body>

 

- div, span : 공간 분할태그

- div : block방식 (하나씩 차례대로 다음줄에 출력)
- span : inline방식 (한줄안에 차례대로 출력)

 

*
h1 태그 - 블락 방식
p 태그 - 블락방식
a, i 태그 -인라인 방식

 

 

 

 

7. CSS Basic


<!DOCTYPE html>
<html>
<head>
    <title>CSS3 Selector Basic</title>
    <style>
        h1 {                            // 스타일 시트
            color: red;
            background-color: orange;
        }
        p{
            background-color: blue;
        }
    </style>
</head>
<body>
    <p>Hi Hello</p>
    <h1>CSS3 Selector Basic</h1>
    <p>The end</p>
</body>
</html>

 


* Tip


태그 자리에 * 를 줘서 태그를 주면 body 뿐 아니라 전체 모든 태그에 영향을 줌 ~ 까지만 알고 있기
ex)
        * {
            color: red;
        }


다중 속성 부여


        body, p, h1, h2, h3, h4, h5, h6 {
            margin: 0; padding: 0;     // 박스 속성
        }

 

 

 


8. id 와 CSS 연동


<!DOCTYPE html>
<html>
<head>
    <title>CSS3 Selector Basic</title>
    <style>
        /* id 속성값으로 header를 가지는 태그의 스타일을 지정*/
        #header {
            width: 800px;
            margin: 0 auto;
            background: red;
        }


        #wrap {
            width: 800px;
            margin: 0 auto;
            overflow: hidden;
        }


        #aside {
            width: 200px;
            float: left;
            background: blue;
        }


        #content {
            width: 600px;
            float: left;
            background: green;
        }
    </style>
</head>
<body>
    <div id="header">
        <h1>Header</h1>
    </div>
    <div id="wrap">
        <div id="aside">
            <h1>Aside</h1>
        </div>
        <div id="content">
            <h1>Content</h1>
        </div>
    </div>
</body>
</html>

 

 

 


9. class 속성 값으로 style 주기


1) Basic


<!DOCTYPE html>
<html>
<head>
    <title>CSS3 Selector Basic</title>
    <style>
       /* class 속성값으로 select를 가지는 태그의 color 속성에 red 키워드로 적용*/
       .select { color: red; }
    </style>
</head>
<body>
    <ul>
        <li class="select">Lorem ipsum</li>
        <li>Lorem ipsum</li>
        <li class="select">Lorem ipsum</li>
        <li>Lorem ipsum</li>
    </ul>
</body>
</html>

 

 


2) 여러 class 의 속성을 가져다 사용


<!DOCTYPE html>
<html>
<head>
    <title>CSS3 Selector Basic</title>
    <style>
       /* class 속성값으로 item을 가지는 태그의 color 속성에 red 키워드로 적용*/
       .item { color: red; }


       /* class 속성값으로 header를 가지는 태그의 background-color 속성에 blue 키워드로 적용*/
       .header { background-color: blue; }
    </style>
</head>
<body>
    <h1 class="item header">Lorem ipsum</h1>
</body>
</html>

 

 


3) 특정 태그 및 클래스에 style 적용


<!DOCTYPE html>
<html>
<head>
    <title>CSS3 Selector Basic</title>
    <style>
       /* li 태그 중 class 속성값으로 select를 가지는 태그의 color 속성에 red 키워드를 적용*/
       li.select { color: red; }
    </style>
</head>
<body>
    <h1 class="select">Lorem ipsum</h1>
    <ul>
        <li class="select">Lorem ipsum</li>
        <li>Lorem ipsum</li>
        <li>Lorem ipsum</li>
        <li>Lorem ipsum</li>
    </ul>
</body>
</html>

 

 


4) style 과 태그의 속성을 일치시키자.


<!DOCTYPE html>
<html>
<head>
    <title>CSS3 Selector Basic</title>
    <style>
        /* input 태그 중에서 type 속성값을 text로 가지는 태그의 background 속성 적용*/
        input[type=text] {background: red; }
    </style>
</head>
<body>
    <form>
        <input />                     // type을 지정하지 않으면 기본 text가 되지만 css 적용안됨
        <input type="text" />
    </form>
</body>
</html>

 

 


5) 스타일 속성 세분화 - img 확장자


<!DOCTYPE html>
<html>
<head>
    <title>CSS3 Selector Basic</title>
    <style>
        /* img 태그 중에서 src 속성값이 png로 끝나는 태그의 border 속성에 3px solid red 속성 적용*/
        img[src$=png] { border: 3px solid red; }
     
        /* img 태그 중에서 src 속성값이 png로 끝나는 태그의 border 속성에 3px solid red 속성 적용*/
        img[src$=jpg] { border: 3px solid green; }


        /* img 태그 중에서 src 속성값이 png로 끝나는 태그의 border 속성에 3px solid red 속성 적용*/
        img[src$=gif] { border: 3px solid blue; }
    </style>
</head>
<body>
    <img src="jajq.png" width="200" height="250" />
    <img src="node.jpg" width="200" height="250" />
    <img src="ux.gif" width="200" height="250" />
</body>
</html>

 

 


* Tip - 확장자 말고도 다양한 옵션이 있음


        img[src$=jpg] { border: 3px solid green; }   // 특정 값으로 끝남
        img[src^=jpg] { border: 3px solid green; }   // 특정 값으로 시작
        img[src~=jpg] { border: 3px solid green; }   // 특정 값을 단어로 포함
        img[src*=jpg] { border: 3px solid green; }   // 특정 값을 포함

 

 

 

And


[01] 사전 준비

|


- 2015.03.09

 

 

1. 사전 준비


Visual Studio Express 2013 for Web 설치
https://www.visualstudio.com/en-us/products/visual-studio-express-vs.aspx


File - Browser with 에서 Chrome 으로 변경

 

 

HTML 할 수 있어야 한다
(HTML 여러가지 테크들 배울것이다)

 

 

* DNS 수푸풀

 

네이버에 비번쳣는데 암호가틀렸다 그 화면나오면 보통 내가 잘못쳤구나 하지?
그걸 이용해서 해킹할 수 있다

해커는 실제 네이버와 동일한 웹페이지 하나 만들고, 사람들이 이 웹페이지에 와서
ID/PWD 친다. 그럼 이 정보는 해커에게 가고 암호다시쳐라라는 화면에서 다시치면
진짜 네이버로 넘어가게 해준다. 이런식으로 해킹가능

 

 

 

* 인터넷 vs 웹 차이점

 

인터넷?
 -전세계를 연결하고있는 국제통신망
웹?
 -인터넷 위에서 서비스를 제공하고 있는 것

 

 

 

* 그레이해커


 -나쁜녀석들을 캐내기 위한 해커

 

 

 

* 보안 뉴스 사이트

 

네이버에 데일리시큐 치면 나온다.

%%%%%%%%%%%% (속성값들 여러가지 예제 코드있는 사이트)
w3schools.com
%%%%%%%%%%%%

 


 

And


[37-40] DFS 분산 파일 시스템, ftp, ftps, Webserver

|


- 2015.03.05

 

 

1. DFS 분산 파일 시스템


[ 분산 파일 시스템(distributed file system)_네임스페이스 문제 ]


# 시나리오 : itbank 회사에 파일서버를 2대를 운영 중에 있었습니다. 파일서버 이용자
들은 2대의 파일서버를 이용할 때 2대의 IP를 번갈아 가며 이용해야 하기에 불편함을
가지고 있었습니다. 해서 시스템 관리자인 여러분은 물리적으로 상이한 2대의 시스템의
공유 자원을 논리적으로 하나의 공유 디렉토리로 묶기로 결정.
# DFS 네임스페이스를 이용하여 2대의 파일서버를 논리적으로 하나의 영역으로 묶어
서비스하세요.


1. Server1 파일 서버 구축(공유)
 - 1G 하드디스크 2개 추가 후 X, Y 드라이브로 문자 할당
 - X 드라이브 공유 ( administrator 모든 권한 )
 ) X 드라이브 않에 Server1_X.txt 생성
 - Y 드라이브 공유 ( administrator 모든 권한 )
 ) Y 드라이브 않에 Server1_Y.txt 생성
2. Server2 파일 서버 구축(공유)
 - 1G 하드디스크 2개 추가 후 X, Y 드라이브로 문자 할당
 - X 드라이브 공유 ( administrator 모든 권한 )
 ) X 드라이브 않에 Server2_X.txt 생성
 - Y 드라이브 공유 ( administrator 모든 권한 )
 ) Y 드라이브 않에 Server2_Y.txt 생성
3. Server3 DFS Server 구축
 - 네임 스페이스 이름 : itbank
 - DFS 디렉토리 트리 : itbank\server1\X    (Server1의 X 드라이브를 대상으로)
        \Y    (Server1의 Y 드라이브를 대상으로)
        itbank\server2\X    (Server2의 X 드라이브를 대상으로)
              \Y    (Server2의 Y 드라이브를 대상으로)


===========================================================
확인 :
Client1에서 Server3의 공유자원 접근 후 server1, server2 디렉토리가 모두 보이나 확인

 


[Tip]


1) 서버관리자 - 역할 추가 - 파일 서비스 - 분산 파일 시스템
2) ip 주소 적고 찾으면 됨

 

 

 

 

2. FTP


[방법]


관리도구 - 역할 추가  - IIS - FTP 추가 설치
IIS 관리자 - 사이트 - Default 웹서버 중지
               - 사이트 우클릭 - FTP 사이트 추가 - 원하는 설정 적용 (기본 연결로 설정)


고급 보안이 포함 된 방화벽 - tcp의 20, 21, 1025-65535 포트 개방

 

 

[Client 접속 방법]


cmd - ftp ftp서버IP 입력

 

 


[ FTP 기본 문제 ]


# Server1 User 추가 : test1, test2
1. Server1에 FTP 서버 구축
 - C:\
 - SSL 인증 없음
 - test1 읽기/쓰기 권한
 - test2 읽기 권한
 - FTP 메세지
 ) 배너 : 오셨습니까.
 ) 시작 : 파일 전송 서비스를 시작합니다.
 ) 끝내기 : 파일 전송 서비스를 종료합니다.
 - FTP 디렉토리 목록 스타일 : UNIX
확인 :
# Server2에서 FTP 접속
 - test1 : 파일 업로드 및 다운로드 가능하면 성공
 - test2 : 파일 다운로드 가능하면 성공. 업로드는 불가능
# 배너 메세지 확인
# 디렉토리 목록 스타일 UNIX 인지 확인

 

 


[ FTP(가상 디렉토리 및 홈 디렉토리) 문제 ]


# Server1 FTP Server
# Local User 추가 : samadal, ddasig
# C:\LocalUser 디렉토리 생성
# C:\LocalUser\samadal 디렉토리 생성 후 디렉토리 안에 samadal.txt 생성
# C:\LocalUser\ddasig 디렉토리 생성 후 디렉토리 안에 ddasig.txt 생성
# C:\전역 디렉터리 생성 후 디렉토리 안에 전역입니다.txt 생성
1. FTP Server 설정
 - SSL 인증 없음
 - 모든 사용자 : 읽기/쓰기
 - FTPROOT 디렉토리 : C:\LocalUser
 - FTP 사용자 격리 : 사용자 이름 실제 디렉터리(격리 안 함)
 - 가상 디렉토리 : C:\전역

 별칭     : itbank


확인 :
# samadal 계정 FTP 접속 후 상위 디렉토리로 이동 가능시 성공
# ddasig 계정 FTP 접속 후 상위 디렉토리로 이동 가능시 성공
# 두 계정 모두 itbank라는 가상 디렉토리 접근 가능하면 성공

 

 


[ FTP(접근통제 및 계정 홈디렉토리) 문제 ]


# Server1 FTP Server
# Local User 생성 : ddasig, samadal
# C:\LocalUser 않에 ddasig, samadal 디렉토리 생성
1. FTP Server 설정
 - SSL 인증 없음
 - 지정되지 않은 클라이언트에 대한 액세스 : 거부
   허용 항목 : 100.100.100.130(Client1)
 - 사용자 이름 디렉터리에서 시작(격리)
 - 모든 사용자 : 읽기/쓰기 권한 부여
 - FTPROOT 디렉토리 : C:\


확인 :
# Server2에서 ftp 서버 접속 차단되면 성공
# Client1에서 ddasig, samadal 접속하여 접속된 경로가 어딘지 확인(pwd)
# 자신의 홈 디렉토리에서 상위 디렉토리(FTPRoot 디렉토리)로 이동 안 되면 성공

 

 

 

 

3. FTPS


[일반 FTP 의 보안상 취약점]


Wireshark 설치 - 랜카드 설치 후 패킷 감시 시작
한글 내용의 txt 파일 다운로드 시 FTP-DATA 라는 프로토콜로 해당 내용을 확인할 수 있다.
FTP DATA 를 아래쪽에서 눌러서 확인해보면 16진수로 나온다. FTP DATA 우클릭 - COPY - BYTE - Offset Hex
복사한 HEXA 코드를 프로그램 이용하여 디코딩 해보면 내용을 그대로 볼 수 있다.
즉 암호화가 되지 않아 스누핑 당했을 시 내용이 그대로 노출된다.
따라서 SSL 프로토콜을 이용하여 보안 및 무결성(변조 여부 확인)을 향상시켜줘야 한다.
하지만 리눅스에서 사용 시 Samba를 이용해야 하기 때문에 잘 사용하진 않는다.

 

 

[방법]


IIS 관리자 - HOSTNAME - 서버 인증서 - 자체 인증된 인증서 만들기 - 이름 넣고 확인
FTP 서버 - FTP SSL 설정 - 만들어 놓은 SSL 인증서 선택 - SSL 연결에 128비트 암호화 사용 - 적용
     1) SSL 연결 허용 : SSL 해도 안해도 연결 허용
     2) SSL 연결 필요 : SSL만 이용
FTP 의 바인딩 설정에서 IP 주소가 * 혹은 본인의 IP 인지 확인

 

 

[ FTPS 문제 ]


# 브릿지 설중 후 진행
1. Server1에 IIS 역할 추가(FTP 게시 포함)
2. 기본 웹 사이트 중지 또는 제거
3. FTP 게시 추가
 - 사이트 이름 : 자유
 - FTPRoot 디렉토리 : 자유
 - 연결 바인딩 : 모든 IP
 - 포트 21
 - SSL 필요
 - 기본 인증 : 모든 사용자 읽기/쓰기 권한
4. 인증서 제작
 - IIS -> 서버 인증서 -> 자체 서명된 인증서 만들기
 ) 인증서 이름 : 자유
5. FTP SSL 인증서 선택 후 128비트 암호화


확인 :
리얼 PC에 FileZilla 실행 후 FTPS 서버 접속 후
인증서 받은 후 보안 통신 되는지 확인

 

 

 

 

4. Webserver


역할추가 - IIS 기본 설치 - Hostname - 사이트 - Default Web Site 제거
C:\inetpub\wwwroot 안에 IIS의 기본 페이지가 만들어져 있다. 안에 내용물 삭제
이 곳에 test.htm 파일을 생성
          <title>정지웅</title><br>
          <h1>안녕하세요</h1>


사이트 우클릭 - 웹 사이트 추가 - 원하는 설정 - 웹사이트 - 기본 문서 - test.htm 설정 (위에부터 우선순위 있으며 필요 없는것 삭제)
(포트번호 바꿨다면 방화벽에서 해당 포트 개방 필요)
Client에서 웹으로 접속해보면 내가 띄우고자 하는 페이지가 나온다.


 

 

And