'입력값'에 해당되는 글 3건

  1. 2014.05.08 키보드 입력값을 암호화하는 기술
  2. 2010.08.12 입력값 유효성 검사 문자들 (1)
  3. 2009.09.17 PHP 입력값 SQL 인젝션 예방
2014. 5. 8. 18:00

키보드 입력값을 암호화하는 기술

키보드 입력값을 암호화하는 기술 
정보출처 IEEE Computer Magazine 
원문언어 영어 
출판날짜 2005년 10월 00일 
국 가 미국 
주제분야 컴퓨터 시스템 및 하드웨어, 운영체제(R12) 

BlueGem 시큐리티사는 최근 기존의 암호 시스템이 제공하지 못했던 키보드 입력 신호를 암호화하는 ''LocalSSL''이라는 암호화 시스템 기술을 개발했다고 밝혔다. 이 기술을 사용하면 해커들이 키로거(keylogger) 툴을 사용하여 사용자의 키보드 입력 값을 알아내는 해킹을 원천적으로 봉쇄할 수 있다. 

기존의 암호화 기술은 주로 통신 시스템상의 송수신 데이터를 암호화하는 것으로 사용자의 키보드와 로컬 응용 사이의 키 입력 신호를 암호화 하지는 못했다. 키보드와 로컬 응용 사이에는 키로거 프로그램이 독립적으로, 혹은 트로이 목마 프로그램에 포함되어 존재하여 사용자의 패스워드 정보나 사회 보장 번호, 신용 카드 정보, 재정 정보, 그 외 개인 정보를 가로채어 해커에게 전송한다고 BlueGem사의 CTO인 박죠씨는 말하고 있다. 

현재 한국에서 사용되고 있는 LocalSSL 기술은 키보드 입력 신호에 대하여 128 비트 암호화 기술을 사용한다. 이 기술은 BlueGem사가 기존의 인터넷상에서 사용 되던 SSL 암호 기술을 수정한 것으로, LocalSSL 기술은 키 해킹 프로그램이 주로 존재하는 영역인 운영 체제를 우회하여 암호화 된 키 입력 값을 전송한다. 박씨는 키로거 프로그램은 주로 메시지 큐나 디바이스 드라이버 영역, 그리고 운영 체제 영역에 존재하면서 사용자 키 입력 값을 가로챈다고 한다. 

BlueGem 프로그램은 보호하고자 하는 응용의 대상에 따라 LocalSSL 인터넷과 LocalSSL 이메일, Local SSL 마이크로소프트 오피스와 같은 3개의 패키지로 구성된다. 이 제품은 모든 서버 하드웨어와 소프트웨어 제품과 호환성을 가지며, 인스톨된 프로그램의 메모리 사용량은 600K 바이트에 불과하다. 

박씨에 따르면 이 프로그램을 사용하면 사용자들은 온라인 뱅킹이나 주식 거래, 가상 사설망 접근, 신용 카드 정보, 모기지론 등과 같은 응용을 안전하게 사용할 수 있다고 한다. 이에 대해 시장 분석 업체인 아버딘 그룹 (Aberdeen Group)의 릭 사이아 (Rick Saia)씨는 "BlueGem사이 LocalSSL 제품은 비즈니스와 개인 정보보호를 위한 중요한 기능을 제공해 주며, 특히 많은 제약이 있는 금융 서비스나 건강 보험 등의 응용에 유용할 것"이라고 말한다. 



출처 : www.gtp.or.kr



Trackback 0 Comment 0
2010. 8. 12. 14:43

입력값 유효성 검사 문자들

개발 진행시 부주의로 인해 불필요한 문자를 허용하고 있다. 문자와 응용 프로그램에 전달되는 의미를 다룬다.

문자 세부사항
NULL or null 종종 웹 응용 프로그램으로 흥미있는 오류 메시지를 볼 수 있다. PL/SQL 경우 확인할 수 있다.
( ', ";, <!) SQL, XPath 그리고 XML Injection 테스트에 사용되는 SQL 문자열 또는 쿼리에 사용된다.
(-, =, +, ") 고급 SQL Injection 쿼리에 사용된다.
( ', &,! , |, <,>) 명령 실행 취약성을 발견하는 데 사용된다.
"><script>alert(1)</script> 기본적인 Cross-Site Scripting 점검에 사용된다.
{%0d , %0a} Carriage Return Line Feed (새줄); 모든 특수 기능.
{%7f , %ff} 바이트 길이 오버플로우, 최대 7-8 비트 값.
{-1, other} 정수 및 언더플로우 취약점.
Ax1024 + 오버플로우 취약점.
{%n , %x , %s} 포맷 스트링 취약점.
.. / 디렉토리 탐색 취약점.
(%, _, *) 와일드카드 문자는 가끔 DoS 문제 또는 정보의 공개를 표시할 수 있다.


이러한 문자는 다양한 방법(즉, 유니코드)으로 표현할 수 있다. 이러한 문자 집합에 입력을 제한할 때 이해하는 것이 중요합니다.


Trackback 0 Comment 1
  1. 2010.08.12 14:44 address edit & del reply

    비밀댓글입니다

2009. 9. 17. 10:08

PHP 입력값 SQL 인젝션 예방

  1. magic_quote_gpc

    Sets the magic_quotes state for GPC (Get/Post/Cookie) operations. When magic_quotes are on, all ' (single-quote), " (double quote), \ (backslash) and NUL's are escaped with a backslash automatically.

    이것은 자동으로 addslashes() 를 하는 옵션입니다.
    하지만 sql 문법에 완전히 맞지 않습니다.
    물론 \ 로 escape 하는 문법을 지원해 주긴 합니다만, 원래의 문법은 아닙니다.
    게다가 ; 는 escape 시키지 않으니 사소한 실수로 큰 보안구멍이 발생할 수 있습니다.

  2. *_escape_string()

    각 sql 별로 escape_string() 이라는 함수가 제공됩니다.
    mysql_escape_string('문자열') 로 mysql 에 맞는 escape 된 문자열로 변환해 줍니다.
    일반적으로 sql 의 문법은 문자열을 작은따옴표(') 로 묶고, 작은따옴표를 표현하는것은 작은따옴표 2번 입니다.('')
    이것 '참' 좋군 이라는 문자열을 escape 시킨다면
    이것 ''참'' 좋군 이 되고
    query('INSERT INTO table VALUES (\'이것 \'\'참\'\' 좋군\');') 이 될 것입니다.

    보통은 post 받은 문자열을 db 에 넣을 것이므로
    $_POST = array_map('mysql_escape_string', $_POST); 로 한번에 escape 시키고 사용하면 됩니다.
    주의할 것은 select 한 결과를 그대로 재사용할 때 다시 escape 시켜야 한다는 것입니다.
    result 는 escape 되지 않은 문자열 입니다.

  3. prepared query

    좀더 안전하고 편리한 방법으로 prepared query 를 이용하는 방법이 있습니다.
    INSERT INTO table (a, b) VALUES (:a, :b) 라는 쿼리를 미리 prepare (컴파일?) 시킵니다.
    이 단계에서는 인젝션이 일어날 문자열이 아예 포함되지 않은채 prepare 됩니다.
    그 다음 prepare 된 쿼리에 문자열을 bind 하여 쿼리를 실행합니다.
    bind 단계에서는 파싱하지 않으므로 escape 시키지 않아도 안전합니다.

    mysqli, pg 등이 제공하고, PDO 를 이용하면 손쉽게 적용할 수 있습니다.
    $db = new PDO(접속);
    $stmt = $db->prepare('INSERT INTO table (a, b) VALUES (:a, :b)');
    $fields[':a'] = '\'; DELETE FROM table;\';
    $fields[':b'] = '\'; DELETE FROM table;\';
    $stmt->execute($fields);

    bind 값인 :a, :b 는 문자열이든 수이든 따옴표를 쓰지 않습니다.
    위의 예제 외에 bindParam() 함수를 이용하여 & 참조변수로 만들어 변수에 값만 채우고 execute() 하면 되는 방식도 있습니다.

  4. 어떻게 뚫을 수 있지? 아무리 생각해도 이 코드에서는 뚫을 수 없어. 그러니 귀찮게 escape 안시켜도 돼.

    오만입니다. 개인의 생각에는 한계가 있고, 뚫린 후에는 늦습니다.
    escape 는 프로그래머의 기본 예절 입니다.


출처 : http://phpschool.com


Trackback 0 Comment 0