Pymysql (Python2 -> Python3) 오류 발생
Pymysql을 이용해서 작업을 해야하는데 기존에 인터넷에 뿌려져 있는 Python2 버전으로 만약에 실행한 경우 예상치도 못한 오류가 발생할 수 있다. 예를들어 아래와 같은 positional argument 오류가 발생할 수 있습니다. 1 takes 1 positional argument but 5 positional arguments (and 1 keyword-only argument) were given cs 이런 경우 Python3와 다르기 때문에 아래와 같이 수정해주시면 됩니다. 1 2 3 4 # import 수정 필요 import pymysql.curosors # connection 속성값을 모두 명시해야함. dbconnect = pymysql.connect( host = 호스트값, user..
2022.08.03
Docker-compose를 이용한 Grafana 만들기 (influxdb, telegraf, grafana)
Docker Compose Setting 부터 진행하며 기본적인 Docker는 설치가 되어 있어야 합니다. AWS Linux기준(CentOS 비슷)으로 진행합니다. ** 기본 root에 mkdir을 이용한 data 폴더를 만든 후 그 위에 만들었습니다. 경로가 헷갈리시면 root 폴더에서 기초 디렉토리 생성 후 따라하시면 됩니다. Grafana 3000 Port Influxdb 8086 Port 1. docker-compose 설치 , 심볼 설정 1 2 3 4 sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-`uname -s`-`uname -m` | sudo tee /usr/local/bin/doc..
2022.08.03
no image
VS Code – AWS EC2 SSH Terminal 연결 (리눅스 GUI 사용)
1.Remote Development 설치 (SSH를 포함한 팩) 2. F1키를 누른 후 SSH 구성파일 열기 선택 3. 해당 위치 Config 클릭 4. 아래와 같이 Config 작성 ## Host 명 Host AWS ## IP주소 HostName 10.10.10.1 ## Key가 있는 경우 Key명 IdentityFile C:/Users/usename/loginkey.pem ## 접속 계정명 User ec2-user ## Port 번호 포트가 다른 경우만 입력 Port 24 F1 키 -> SSH 연결로 지정한 Host명 클릭 후 접속 (좌측 하단 버튼 클릭 가능)
2022.07.27
키패드 누르기 - 2020 카카오 인턴십 프로그래머스 ( JavaScript )
최대한 직관적이게 소스코드를 만들어 보았습니다. 1. 키패드 모양의 배열을 만든다. (* = 11, # = 22 의로 임의의 숫자를 만들어 숫자 타입 만들기) 2. 왼손 오른손의 위치를 지정한 배열을 만든다. 3. 눌러야 할 위치값 측정 4. 손의 위치값과 눌러야 할 위치값 비교 5. 손 위치 변경 후 값 리턴 계산을 위한 함수 2개를 추가로 만들었습니다. find_num_loca = 눌러야할 위치값 측정 함수 check_lr = 왼손 오른손 중 선택 하는 함수 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49..
2021.09.28
no image
윈도우10 시스템 복원 방법 - 포맷 / 복구
안녕하세요. JohnComputer 입니다. 윈도우 10 복구 방법을 가르쳐 달라는 분이 계셔서 직접 블로그에 올리게 되었습니다. 포맷을 하면 모든 앱과 설정이 날아 갈 수 있어서 바이러스에 걸리게 되면 복구 하는 방법을 알려드리겠습니다. 그림을 보면서 차근차근 따라하시면 됩니다. 1. 키보드의 시작버튼 을 눌러주시고 내 PC 를 입력하시면 화면처럼 나오고 속성을 클릭해 주세요. 급하게 하느라 이미지가 이상하네요. 2. 우측에 관련 설정에서 시스템 보호를 눌러주세요. 3. 시스템 보호탭에 있는 시스템 복원을 눌러 주세요. 4. 아래와 같이 윈도우 백업이나 시스템에 중요한 일이 있어서 자동으로 복원 지점이 설정 되어 있는 경우가 있습니다. 복구를 원하는 날짜를 클릭하여 복원 진행해주시면 됩니다.
2021.09.28
TIP
no image
20대 잔여백신 1차 접종 예약방법 및 후기 네이버/카카오 ( 화이자 ) ( 대구 )
안녕하세요 JohnComputer 입니다. 코로나 펜데믹 때문에 일 할때 제약이 많이 생겨서 알아보던 중 20대도 잔여백신 신청으로 접종 가능하다는 것을 알아 신청하여 맞고 왔습니다. 그래서 저 처럼 백신을 맞고자 하는 20대들을 위해서 알림신청 방법과 예약 TIP 그리고 후기글을 남기려고 합니다. 현재 잔여백신 신청은 전화상으로는 불가능하고 앱과 웹으로만 진행이 가능합니다. ( 네이버, 카카오 ) 저는 네이버로 예약 신청하였고 정말 치열했습니다. 1초만에 사라지니 꿀팁 참고하셔서 도움이 되시길 바랍니다. 저는 1차접종을 완료했고 일주일이 조금 안되었는데 처음 3일정도는 주사맞은 팔이 마음대로 잘 안움직였습니다. 아마 군에 다녀오신 분들은 파상풍주사 맞은 느낌과 비슷하다고 하면 이해하실거에요. 기타 다른..
2021.07.29
컴퓨터보안 - 공기업 준비 필기 요약정리
○ 보안의 3대 요소 (정보보호의 목표) 1. 기밀성 : 인가된 사용자만 정보자산 접근가능 2. 무결성 : 인가된 사용자 + 인가된 방법으로만 정보변경 가능 3. 기밀성 : 정보 + 정보시스템의 인가 = 언제든지 사용 가능 ○ 보안공격 공격종류 피해방법 감지 예시 소극적공격 직접피해X 어려움 스니핑 혹은 도청 적극적공격 직접피해O 쉬움 변경, DDos, 하이재킹 ○ ISMS 생명주기 5단계 1. 정보보호 계획 및 정책 수립 2. 경영진 참여 및 조직구성 3. 위험관리 4. 대책구현 5. 사후관리 ○ 암호의 변화 - 고대암호 1. 스테가노 그래피 : 다른 사람이 읽지 못하도록 통신문 감춤 ( 기밀정보를 이미지나 MP3에 숨김 ) 2. 스키테일 : 막대에 감아 작성 후 풀어서 순서를 못맞추게함 3. 시저암호..
2021.07.21
PHP CRUD 모듈자료 입력/수정/삭제 모듈 - MSSQL_Version
안녕하세요. John Computer 입니다. 매번 페이지 / 메소드 마다 칼럼명과 데이터를 집어넣어서 만드는 번거러움을 없애기 위해서 동적으로 칼럼의 갯수와 상관없이 삽입 수정 삭제가 가능하게 쿼리문을 작성해 놨습니다. 사용법 또한 간단하니 다운받으셔서 이용하세요 사용법 1. input을 생성하여 insert_col = DB칼럼명 / insert_param = DB에 들어갈 데이터값 을 넣는공간을 만들어주세요. 2. insert_col의 경우 칼럼명을 보여질 필요가 없기 때문에 hidden으로 처리해주시면 됩니다. 3. ajax에 insert_page.php 경로를 url에 설정 해주시고 colunm / insert_param 과 같은 변수명은 그대로 작동하게 두고 TABLE 명만 바꿔 주시면 됩니다...
2021.06.07
반응형

Pymysql을 이용해서 작업을 해야하는데

기존에 인터넷에 뿌려져 있는 Python2 버전으로 만약에 실행한 경우 예상치도 못한 오류가 발생할 수 있다.

 

예를들어 아래와 같은 positional argument 오류가 발생할 수 있습니다.

1
takes 1 positional argument but 5 positional arguments (and 1 keyword-only argument) were given
cs

이런 경우

Python3와 다르기 때문에 아래와 같이 수정해주시면 됩니다.

 

 

1
2
3
4
# import 수정 필요
import pymysql.curosors
# connection 속성값을 모두 명시해야함.
dbconnect = pymysql.connect( host =  호스트값, user = DBID, password = 패스워드, database = "mysql", charset = "utf8mb4" )
cs

 

반응형
반응형

Docker Compose Setting 부터 진행하며

기본적인 Docker는 설치가 되어 있어야 합니다.

AWS Linux기준(CentOS 비슷)으로 진행합니다.

 

** 기본 root에 mkdir을 이용한 data 폴더를 만든 후 그 위에 만들었습니다.

경로가 헷갈리시면 root 폴더에서 기초 디렉토리 생성 후 따라하시면 됩니다.

 

Grafana 3000 Port

Influxdb 8086 Port

 

 

1. docker-compose 설치 , 심볼 설정

1
2
3
4
 
sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-`uname -s`-`uname -m` | sudo tee /usr/local/bin/docker-compose > /dev/null
sudo chmod +/usr/local/bin/docker-compose
sudo ln -/usr/local/bin/docker-compose /usr/bin/docker-compose
cs

 

2. 기초 디렉토리 생성 (경로는 개인 Custom)

 

 

1
2
3
4
5
6
7
8
mkdir data
cd /data
mkdir -/data/influxdb/config
mkdir -/data/influxdb/data
mkdir -/data/grafana/etc_grafana
mkdir -/data/grafana/var_lib_grafana
mkdir -/data/telegraf/
chown -472:472 /data/grafana/
cs

 

3.influx + grafana +  telegraf : docker-compose Yaml 파일 (Telegraf는 추후 사용을 위한 설치)

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
version: '3.6' # Docker 버전 -> 공식 문서 참조 2,3 여러 버전 존재
services:
  influxdb:
    image: influxdb:1.8.10-alpine
    # 추후 버전 변경 필요
    container_name: influxdb  # 생성되는 컨테이너 명
    ports:
      - 8086:8086  # 포트
    volumes:
      - type: bind
        source: /data/influxdb/data # 연결할 볼륨 설정
        target: /var/lib/influxdb
      - type: bind
        source: /data/influxdb/config
        target: /etc/influxdb
    restart: always
  grafana:
    image: grafana/grafana:8.1.2
    container_name: grafana
    ports:
      - 3000:3000
    environment:
      - GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource
    volumes:
      - /data/grafana/var_lib_grafana:/var/lib/grafana
      - /data/grafana/etc_grafana/grafana.ini:/etc/grafana/grafana.ini:ro
    restart: always
  telegraf:
    image: telegraf:1.19.3
    container_name: telegraf
    volumes:
      - /data/telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro
    restart: always
# telegraf 포트 필요시 Port로 
cs

 

4. Config 생성

 

1
2
3
4
5
## config 만들기
# telgraf
docker run --rm telegraf:1.19.3 telegraf config > /data/telegraf/telegraf.conf
# grafana
docker run --rm --entrypoint /bin/sh grafana/grafana:8.1.2 -"cat /etc/grafana/grafana.ini" > /data/grafana/etc_grafana/grafana.ini
cs

 

5. docker-compose 실행

1
2
3
docker-compose up -d
docker-compose down (내리기)
cs

 

 

반응형
반응형

1.Remote Development 설치 (SSH를 포함한 팩)

2. F1키를 누른 후 SSH 구성파일 열기 선택

3. 해당 위치 Config 클릭

4. 아래와 같이 Config 작성

## Host 명
Host AWS
    ## IP주소
    HostName 10.10.10.1
    ## Key가 있는 경우 Key명
    IdentityFile C:/Users/usename/loginkey.pem
    ## 접속 계정명
    User ec2-user
    ## Port 번호 포트가 다른 경우만 입력
    Port 24

 

    F1  -> SSH 연결로 지정한 Host명 클릭 후 접속

(좌측 하단 버튼 클릭 가능)

 

 

반응형
반응형

최대한 직관적이게 소스코드를 만들어 보았습니다.

1. 키패드 모양의 배열을 만든다. (* = 11, # = 22 의로 임의의 숫자를 만들어 숫자 타입 만들기)

2. 왼손 오른손의 위치를 지정한 배열을 만든다.

3. 눌러야 할 위치값 측정

4. 손의 위치값과 눌러야 할 위치값 비교

5. 손 위치 변경 후 값 리턴

 

계산을 위한 함수 2개를 추가로 만들었습니다.

find_num_loca = 눌러야할 위치값 측정 함수

check_lr = 왼손 오른손 중 선택 하는 함수

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
function solution(numbers, hand) {
//     numbers 배열  hand = right or left
    var answer = '';
    const numArr = [[1,2,3],[4,5,6],[7,8,9],[11,0,22]];// * = 11, # = 22 키패드 만들기
    const numLen = numbers.length;
    let lhLocation = [3,0];
    let rhLocation = [3,2];
 
    for(let i = 0; i < numLen; i++){
        let numLocation = find_num_loca(numArr,numbers[i]); // 위치 좌표값 받기
        answer += check_lr(numLocation,lhLocation,rhLocation,hand);
        console.log(numLocation);
        console.log(lhLocation);
    }
    return answer;
}
 
function find_num_loca(numArr,checkNum){
    let retR = 0;
    let retC = 0;
 
    for(let i = 0; i < numArr.length; i++){
        for(let j = 0; j < numArr[0].length; j++){
            if( numArr[i][j] === checkNum){
                return [i, j];
            }
 
        }
    }
}
 
function check_lr(numLocation,lhLocation,rhLocation,hand){
    if(numLocation[1=== 0){ 
        lhLocation[0= numLocation[0];
        lhLocation[1= numLocation[1];
        return 'L'
    }else if(numLocation[1=== 2){ 
        rhLocation[0= numLocation[0];
        rhLocation[1= numLocation[1];
        return 'R'
    }
    else// numLocation = 1 중간위치
        let leftSize = Math.abs(numLocation[0]-lhLocation[0]) + Math.abs(numLocation[1]-lhLocation[1]);
        let rightSize = Math.abs(numLocation[0]-rhLocation[0]) + Math.abs(numLocation[1]-rhLocation[1]);
 
        if(leftSize < rightSize){
            lhLocation[0= numLocation[0];
            lhLocation[1= numLocation[1];
            return 'L'
        }else if(rightSize < leftSize){
            rhLocation[0= numLocation[0];
            rhLocation[1= numLocation[1];
            return 'R'
        }else{
            if(hand === 'left'){
                lhLocation[0= numLocation[0];
                lhLocation[1= numLocation[1];
            }
            else {
                rhLocation[0= numLocation[0];
                rhLocation[1= numLocation[1];
            }
            return hand.substr(0,1).toUpperCase();
        }
    }
}
cs
반응형
반응형

안녕하세요. JohnComputer 입니다.

 

윈도우 10 복구 방법을 가르쳐 달라는 분이 계셔서 직접 블로그에 올리게 되었습니다.

 

포맷을 하면 모든 앱과 설정이 날아 갈 수 있어서 바이러스에 걸리게 되면 복구 하는 방법을 알려드리겠습니다.

 

그림을 보면서 차근차근 따라하시면 됩니다.

 

1. 키보드의 시작버튼 을 눌러주시고 내 PC 를 입력하시면 화면처럼 나오고 속성을 클릭해 주세요.

급하게 하느라 이미지가 이상하네요.

2. 우측에 관련 설정에서 시스템 보호를 눌러주세요.

 

 

3. 시스템 보호탭에 있는 시스템 복원을 눌러 주세요.

 

4. 아래와 같이 윈도우 백업이나 시스템에 중요한 일이 있어서 자동으로 복원 지점이 설정 되어 있는 경우가 있습니다.

복구를 원하는 날짜를 클릭하여 복원 진행해주시면 됩니다.

반응형
반응형

안녕하세요 JohnComputer 입니다.

코로나 펜데믹 때문에 일 할때 제약이 많이 생겨서 알아보던 중

20대도 잔여백신 신청으로 접종 가능하다는 것을 알아 신청하여 맞고 왔습니다.

그래서 저 처럼 백신을 맞고자 하는 20대들을 위해서 알림신청 방법과 예약 TIP 그리고 후기글을 남기려고 합니다.

현재 잔여백신 신청은 전화상으로는 불가능하고 앱과 웹으로만 진행이 가능합니다. ( 네이버, 카카오 )

저는 네이버로 예약 신청하였고 정말 치열했습니다. 1초만에 사라지니 꿀팁 참고하셔서 도움이 되시길 바랍니다.

저는 1차접종을 완료했고 일주일이 조금 안되었는데 처음 3일정도는 주사맞은 팔이 마음대로 잘 안움직였습니다. 

아마 군에 다녀오신 분들은 파상풍주사 맞은 느낌과 비슷하다고 하면 이해하실거에요.

기타 다른 부작용은 없었고 일상생활에 지장이 없었습니다.

 

 

예약 순서는 알림신청(네이버,카카오) 모두 -> 시간대 분석 -> 무한 새로고침 -> 예약 -> 완료

예약진행이 되면 병원에서 전화가 오고 1~2시간 이내에 접종하러 가셔야 합니다.

알림을 받아서 정리해둔 시간표를 가지고 무조건 한 병원을 보고 무한재부팅 해야합니다.

저는 컴퓨터 네이버 / 휴대폰 카카오 이렇게 두개를 왼손오른손 해서 두개 동시에 진행했습니다.

네이버는 잔여백신예약 페이지를 띄우고 우측하단에 재부팅을 계속 눌렀습니다.

네이버의 경우 잔여백신이 뜨면 자동으로 화면 이동을 합니다.

잠깐의 망설임도 없이 바로 신청 누르셔야 해요.. .ㅠㅠ

 

카카오톡은 시간별 병원 화면을 들어가 업데이트 버튼을 계속 눌러주었습니다.

 

둘다 거의 동시에 뜨지만 저의 경우 네이버가 조금 더 빨랐고 결과적으로 네이버로 예약하게 되었습니다.

 

******** 네이버 인증서를 먼저 등록을 해주셔야 바로 신청이 가능합니다.

******** 예약 시간대 확인 방법은 아래에 적혀있습니다.

https://nid.naver.com/user2/eSign/v1/home/land

 

https://nid.naver.com/user2/eSign/v1/home/land

 

nid.naver.com

 

네이버 알림신청방법

네이버 앱을 설치 후 초록창에 잔여백신 알림을 검색해주세요.

 

아래에 잔여백신 알림신청/조회하기를 눌러주세요.

 

우측상단에 접종기관 추가 등록을 눌러주세요. ( 최대 5개 )

 

거주지에서 가까운 병원을 검색해 주시고 체크박스 선택 -> 선택한 접종기관 등록 해주세요.

이후 나중에 병원마다 올리는 시간이 들쭉날쭉 해 보이지만 대부분 ( 10~11 ) ( 14~16 ) 사이에 올라옵니다.

 

병원들마다 올리는 시간을 메모장이나 엑셀에 정리해두시면 됩니다.

 

카카오 알림신청 방법

카카오톡 하단의 # 을 누른 후 상단에 잔여백신 탭을 눌러주세요.

-> 알림 받을 병원을 선택해주세요.

위와 같은 화면이 뜨고 알림신청버튼을 누를 수 있습니다.

 

네이버와 마찬가지로 매일 잔여백신 발생시 알람이 뜹니다. 카카오톡 지갑으로 뜨게 되니

알림 발생시간을 꼭 기록해 두세요.

반응형
반응형

보안의 3대 요소 (정보보호의 목표)

1. 기밀성

: 인가된 사용자만 정보자산 접근가능

2. 무결성

: 인가된 사용자 + 인가된 방법으로만 정보변경 가능

3. 기밀성

: 정보 + 정보시스템의 인가 = 언제든지 사용 가능

 

보안공격

공격종류 피해방법 감지 예시
소극적공격 직접피해X 어려움 스니핑 혹은 도청
적극적공격 직접피해O 쉬움 변경, DDos, 하이재킹

 

ISMS 생명주기 5단계

1. 정보보호 계획 및 정책 수립

2. 경영진 참여 및 조직구성

3. 위험관리

4. 대책구현

5. 사후관리

 

암호의 변화

- 고대암호

1. 스테가노 그래피

: 다른 사람이 읽지 못하도록 통신문 감춤 ( 기밀정보를 이미지나 MP3에 숨김 )

2. 스키테일 : 막대에 감아 작성 후 풀어서 순서를 못맞추게함

3. 시저암호 : 문자를 우측으로 n문자씩 이동시켜 문자 치환

 

- 근대암호

1. 비르네르 : 시저암호의 확장판

2. 플레이페어 암호 : 미국과 영국군에서 사용

3. 에니그마 : 독일에서 사용, 기계를 이용해 알파벳 변환 사용 가능

 

- 현대 암호

1. DES

: IBM이 개발, 미국 NIST 채택 -> AES : DES 안전성 문제에 따라 2000년 미국 표준 블록 암호로 채택

2. RSA

: 공개키 암호 방식, 스탠포드 대학에서 개념을 만들고 MIT에서 처음 개발 RSA는 개발자 이름의 초성

 

대칭키(비밀키) / 비대칭키(공개키)

항목 대칭키(비밀키) 비대칭키(공개키)
키의 상호관계 암호화키 = 복호화키 암호화키 복호화키
안전한 키 길이 128bit 이상 2048bit 이상
암호화키 비밀 공개
복호화키 비밀 비밀
비밀키 전송 필요 불필요
키 개수 N(N-1)/2 2N
암호화속도 고속 저속
경제성 높다 낮다
제공 서비스 기밀성 기밀성, 부인방지, 인증
목적 데이터 암호화 대칭키 교환
전자서명 복잡 간단
특징 - 사용자의 증가에 따라 관리해야 할 키 개수 증가
- 키 길이가 짧다
- 키교환 원리가 없다.
- 사용자의 증가에 ᄄᆞ라 관리해야 할 키의 개수가 적다.
- 키의 길이가 길다.
- 중간자 공격에 취약하다.
해당 알고리즘 DES, 3-DES, AES, SEED, ARIA, RC5, Skipjack RSA, Rabin, ElGamal, ECC, DSA, KCDSA

 

암호 알고리즘

1. 스트림 암호

: 데이터의 흐름에 따라 순차적으로 처리해 나가는 암호 알고리즘

: 일회성 목적

 

2.블록 암호

: 블록 단위의 집합을 한번에 처리하는 암호 알고리즘

: DES, 3-DES, AES 등 대부분 사용 알고리즘

2-1. 블록 암호의 운용모드

- ECB : 각 평문블록을 암호화 한 것

- CBC : 암호문 블록을 체인처럼 연결 / 이전 암호문 블록과 XOR계산 후 암호화

- CFB : 1번 블록 암호 알고리즘 입력받음

- OFB : 알고리즘 출력을 입력으로 피드백

- CTR모드 : 카운터를 암호화 하여 키스트림을 만들어냄

 

해시함수 ( 메이지 다이제스트 함수 )

: 해시는 대칭을 확인하여 일치하는지 여부 확인 / 고정된 길이의 의사난수 생성 연산기입

1. 일방향성 - 결과값만 확인가능, 역 계산 불가

2. 약한 충돌저항성 - 해시값이 있을 때, 해당하는 또 다른 입력값 구하기

3. 충돌저항성 - 서로 다른 입력 충돌 찾기가 계산상 불가능

 

접근 통제 정책

1. 임의적 접근통제 ( DAC )

: 주체나 주체가 속해있는 그룹의 식별자에 근거하여 객체에 대한 접근 제한.

 

2. 강제적 접근통제 ( MAC )

: 정보시스템 내에서 어떤 주체가 어떤 객체에 접근하려 할 때 양자의 보안등급을 비교하여 높은 보안을 요하 는 정보가 낮은 보안 수준에 노출 않도록 접근 제한.

 

 

2-1. 벨 라파듈라 모델 (BLP)

: 첫 번째로 제시된 수학적 보안 모델

: 높은 등급의 데이터를 읽을 수 없고, 낮은 등급의 데이터에 쓸 수 없다.

 

2-2. 비바 모델 (biba)

: 1977 비바가 제안한 데이터 무결성 모델

: 낮은 등급의 데이터를 읽을 수 있고, 높은 등급의 데이터에 쓸 수 없다.

: 무결성 3가지 목표중 비인가 자들의 데이터 변형 방지만 해결한 모델

 

2-3. 클락-월슨 모델

: 1987년 무결성 3가지 목표를 모두 만족하는 접근 제어 모델

비인가자가 수정하는것을 방지 (Biba)

/외부 일관성 유지 (정확한 트랜젝션)

합법적인 사람에 의한 불법적인 수정을 방지

 

2-4. 만리장성 모델 (CWM, Chinese Wall Model, Brewer-Nash Model)

: 사용자의 이전 동작에 따라 변화할 수 있는 접근 통제를 제공한다. (MAC, DAC)

: 이해 충돌을 야기하는 주체와 객체 사이에 정보가 흐르지 않게 한다. (정보 흐름모델을 기반으로 한다.)

: 이해 충돌을 방지하기 위해 만리장성이라 불리는 벽을 사용한다.

 

3. 역할기반 접근통제 ( RBAC )

: 임의와 강제 접근 통제 단점 보완

: 사용자가 적절한 역할 할당과 적합한 허가가 할당된 경우만 사용자가 특정한 모드로 정보 접근 가능

 

공개키 기반 구조 (PKI)

: 공개키 기반 구조는 공개키 알고리즘을 통한 암호화 및 전자서명 제공

루트킷 관리자 권한인 루트 접근 권한을 얻어냄.
백도어 (트랩도어) 개발자가 편이상 만든 보안이 제거된 비밀통로
스파이웨어 사용자 동의없이 컴퓨터 정보 수집 후 전송
애드웨어 자동적으로 광고가 표시되는 프로그램. 스파이웨어를 포함한 경우가 많다
스택스넷(staxnet) 산업 소프트에서 공정 설비등을 공격 목표로 하는 군사적 수준의 무기
키로깅 사용자가 키보드로 PC 입력하는 내용 탈취
봇넷 악의적인 코드에 감연된 컴퓨터
- 금전 목적으로 DDos 공격실행하기 위해 좀비 시스템 이용.
스누핑
스니핑 송신자와 수신자가 주고받는 데이터를 중간에서 도청 하는것
스푸핑
싱글사이온 (SSO) 한번의 로그인으로 각종 시스템 사용가능 보안 솔루션
커버로스 싱글사이온 / 유닉스에서 사용하다 윈도우 기본인증 방법 사용중 / 대칭키 암호 기반
SEED 민간 부분인 인터넷, 전자 상거래, 금융 등 공개시 민감한 영향을 예기 할 수 있는 정보와 개인 프라이 버시를 보호하기 위한 대칭키 분류 암호 알고리즘이다.
제로데이공격
decoy 가짜 ID, PW를 뿌려 접속 시도시 확인
RBAC 1970년대 다중사용자 다중 프로그래밍 환경에서의 보안 처리 요구만족을 위해 제안된 방식
NAT 라우터에 의해 적은 숫자의 유효 IP 주소만으로도 많은 시스템들이 인터넷 접속 가능
land attack 패킷전송에 출발 IP, 목적 IP를 같이 만들어 공격 대상에게 공격하는 방법
PGP 1991년 필 짐머만(Phil Zimmermann) 이라는 개인에 의해서 개발된 오픈소스로, 나중에 RFC 3156 으로 표준화 되었다
SET VISA, Master에서 제안한 온라인 전자상거래 결제 표준안
PKI 공개키를 이용하여 송수진 데이터 암호화된 디지털 인증서를 통해 사용자 인증하는 시스템








보안 필기.hwp
0.02MB

 

반응형
반응형

module_CRUD.zip
0.04MB

안녕하세요. John Computer 입니다.

매번 페이지 / 메소드 마다 칼럼명과 데이터를 집어넣어서 만드는 번거러움을 없애기 위해서

동적으로 칼럼의 갯수와 상관없이 삽입 수정 삭제가 가능하게 쿼리문을 작성해 놨습니다.

사용법 또한 간단하니 다운받으셔서 이용하세요

 

사용법

1.  input을 생성하여 insert_col = DB칼럼명 / insert_param = DB에 들어갈 데이터값 을 넣는공간을 만들어주세요.

2.  insert_col의 경우 칼럼명을 보여질 필요가 없기 때문에 hidden으로 처리해주시면 됩니다.

3.  ajax에 insert_page.php 경로를 url에 설정 해주시고 colunm / insert_param 과 같은 변수명은 그대로 작동하게 두고 TABLE 명만 바꿔 주시면 됩니다.

 

## 한 화면에 여러 FORM이 존재 할 경우 FORM을 지정하는 선택자를 넣어주세요.

## 테이블명 이외에 바꿀내용은 없습니다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<!DOCTYPE html>
<html lang="en">
 
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
</head>
 
<body>
 
  사번 : <input type="text" id="inputemp" class="form-control" name="insert_param">
  <input type="hidden" name="insert_col" value="emp_num" />
 
  이름 : <input type="text" id="inputname" class="form-control" name="insert_param">
  <input type="hidden" name="insert_col" value="name" />
 
  <input type="button" name="" value="등록" onclick="insert_event()" />
  <script src="./jquery.min.js"></script>
 
  <script>
    //입력 클릭시 insert해주는 php 로 데이터 전송하는 함수
    function insert_event() {
      var column_array = $("input[name=insert_col]").length//hidden 되어있는 input 갯수
      //배열 생성
      var column = new Array(column_array); //컬럼 배열선언
      //배열에 값 주입
      for (var i = 0; i < column_array; i++) {
        column[i] = $("input[name=insert_col]").eq(i).val();
      }
      var insert_param_array = $("input[name=insert_param]").length//input type text 개수.
      //배열 생성
      var insert_param = new Array(insert_param_array); //파라미터 배열선언
      //배열에 값 삽입
      for (var i = 0; i < insert_param_array; i++) {
        insert_param[i] = $("input[name=insert_param]").eq(i).val();
      }
      $.ajax({
        type: 'post',
        url: './forms/insert_page.php',
        async: false// 전역변수 설정 변수
        data: {
          url: url,
          column: column, //컬럼
          param: insert_param, //params
          TABLENAME: 'dbo.employee'//테이블명
        },
        success: function(data) {
          alert("입력되었습니다.");
          location.reload();
        },
        error: function(request, status, error) {}
      });
    }
  </script>
</body>
</html>
 
cs

insert Page 입니다. 여기소스를 참고하여 직접 input을 만들어 주세요.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<!--
===============================================================================
          insert 모듈
          // INSERT into xxx => SQL
          // VALUES ( yyy )        => SQL2
          // sum_sql = SQL + SQL2
-->
<?php
  include "데이터베이스 설정 경로";
  // DB를 입력하실 분은 DB Con 등 여러 설정을 넣어주세요.
 
  $TABLENAME = $_POST["TABLENAME"]; // 테이블명 가져오기
  $column = $_POST["column"]; // 칼럼명 가져오기
  $param = $_POST["param"]; // 파람값 가져오기
 
  $select_obj_length = count($column);    //컬럼수
  $a_length = count($param);    //value 수
 
  $sql = "INSERT into $TABLENAME";
  $sql2 = " VALUES (";
  $params = array();
  $sql .= "(";
 
  for ($i=0$i < $select_obj_length ; $i++) {
    if($i == $select_obj_length-1){
     $sql .= $column[$i];
     $sql2 .="?";
     break;
    }
    $sql .= $column[$i].",";
    $sql2 .="?,";
  }
 
  for ($j=0$j < $a_length$j++) {
    array_push($params,$param[$j]);
  }
 
  $sql .= ")";
  $sql2 .= ")";
 
  print_r($sql.$sql2);
  print_r($column);
  $sum_sql = $sql.$sql2;
 
  // $params = array(&$column[0], &$column[1], &$column[2]);
  print_r($param);
  sqlsrv_query($con$sum_sql$params);  // $sql 에 저장된 명령 실행
  sqlsrv_close($con);
?>
 
cs

 

insert_page를 이용하여 자동으로 쿼리문을 생성하여 줍니다.

 

나머지 수정 삭제도 첨부파일로 올리니 ajax -> data의 내용을 읽어보시고 본인 프로그램에 맞게 이용해 주시면 됩니다.

반응형