ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 웹페이지의 기본 보안 SQL In 볼께요
    카테고리 없음 2020. 2. 4. 16:33

    안녕하세요 윈드 디자인입니다.홈페이지의 작성은 웹 사이트의 보안 기초적 요소에 대해 간략하게 포스팅하고자 한다.(디자인회사이지만 개발자가 많아서...)저도 개발자 출신이기 때문에...)후술하는 웹 해킹 공격법은 예전부터 존재해 왔고 많은 IT서적에도 기본적으로 기술되어 있기 때문에 대부분의 홈페이지 및 플레입니다.워크, 게시판 솔루션 등은 이러한 공격법에 대해 어느 정도 대비가 되어 있습니다.많은 웹/서버 호스팅 업체로부터 관련 보안 솔루션을 공급받기도 하는데, 그 기본적인 해킹법에 대해 모든 개발자들이 지속적으로 학습해야 하고 어떤 방식으로 접근하는지에 대해 그 가장 작은 소양은 알아야 한다고 생각할 것입니다.소스를 단순히 가져가는 것만이 아니라 읽을 수 있는 능력, 코드를 그때 보지 못하더라도 코드를 보고 그 구현 과정과 알고리즘을 이해하는 것이 프로그래머의 필수 덕목이 아닐까 싶을 것이다.


     


    >


    >


    SQL은 데이터베이스를 접속하여 제어할 수 있는 구조화질어입니다.SQL을 실제로 작성할 수 있는 권한을 가진 사람은 데이터베이스 관리자 및 서버 관리자 정도가 있습니다.그리고 이 웹 상의 게시판, 동적인 문서 페이지가 있는 경우, 악의적인 사용자가 어플리케이션의 취약점을 이용해서 개발자, 관리자가 예상치 못한 SQL을 실행시킴으로써 데이터베이스를 조작할 수 있고, 이것을 SQL 인젝션(Injection)이라고 합니다.대표적으로 게시판 로그인 구문이 있습니다.페이지 로그인 쿼리가 다음과 같다고 가족입니다.SELECT * FROM TABLE WHERE id = '아디' AND password = '패스워드'를 보려면 일반적으로 로그인이 가능한 과인이 없는 와인에 관해 검증하는 쿼리입니다.에디가 danny, 비밀 번호가 abcd는 SELECT*FROM TABLE WHERE id='danny'AND password='abcd'이런 형태가 되겠지만 비밀 번호를 혹시'or'일'='일(공간의 공백을 포함)에 입력하면 SELECT*FROM TABLE WHERE id='danny'AND password=''or'일'='일'이런 문구로 완성이 되고 이 조건은 마무리= 일한다는 조건이 00%진실이기 때문에 아무런 방어과에 다니는 우회 코드가 없으면 이 코드로 로그인이 가능합니다.(**모두 이 방법은 가장 고전적이고 방어가 대부분 되어 있어 저의 호기심에서도 현재 운영하고 있는 사이트에서 연구하는 것은 사이버범죄 행위로 분류되니 절대 하지 마십시오.또, 제 서버에서 테스트용으로 사용해 주세요. ) 이 형태는 가장 일반적인 형태이며, UNION, JOIN, DROP 등의 코드를 사용하면 더 많은 데이터베이스를 조회, 조작할 수 있습니다.방어 우회)SQL인젝션은 다양한 형태로 공격이 되고, 해킹 기술 또한 계속 발전하게 일 00%방어 법은 없습니다. 방어할 수 있는 방법을 생각하고, 현존하는 방어법의 코드를 수용하고 이해하는 과정이 필요하다고 생각합니다.(일) 데이터베이스 저장 프로시저(Stored Procedure) 사용 데이터베이스와의 연동 과정에서 SQL 코드를 직접적으로 쓰기 보다는 저장 프로시저 코드를 통해 데이터베이스 연동을 실현하면 프로시저 내부에서 입력값에 데이터 검증을 하게 됩니다. 프로시저 내부에서 코드가 실행되고 프로시저는 관리자만 알고 있는 코드스트리우로 구성되어 있기 때문에 보안 측면에서 더 안전하다고 합니다.(2)입력 값 검증 및 치환 SQL은 항상',#,"등과 같은 글자가 따르기 때문에 해당 문자 입력에 대해서 검증하는 과정이 필요합니다. 입력한 값에서 발견된 경우 데이터베이스에 접근할 수 없도록 다른 문자로 대체하는 방법 등이 있습니다.ex)*PHP: mysql_real_escape_string, str_replace, (int)$php 변수 사용 php.ini 설정에 magin_quotes_gpc=on으로 설정: 사용자가 입력한 따옴표가 쿼리에 반영되지 않는다. *JSP:validata(), prepareStatement()(3)웹 방화벽을 사용, 웹 방화벽 서비스를 사용하는 방법이 있습니다. 기본적인 SQL Injection, XSS와 같은 웹 공격 이외에 정보 유오피스에 방지, 부정 로그인 방지 등의 형태의 솔루션 등에 활용할 수 있습니다.2.XSS공격 XSS는 Cross Site Scriptingh의 약자를 줄이고 CSS 하면 헷우 나...CSS 하면, 우리가 알고 있는 stylesheet코드가 너무도 유명하고 혼동된 것으로 XSS와 명칭이 굳었어요. XSS는 다른 사용자의 정보(쿠키, 세션 등)을 추출할 목적으로 사용하는 공격 기법입니다. 검색 페이지, 게시판 페이지에서 html, js 코드를 이용할 수 있는 맹점을 이용하는 공격 형태입니다.


    >


    >


    게시판의 스토리 업로드에 필터링이 걸려 있지 않을 경우 스크립트가 작동하는 것을 볼 수 있다.이처럼 js코드가 작동하는데 위험하다. 이 사진은 단순히 alert창에 메시지가 뜨는 것으로 마지막 쟈싱지만 location.href등의 페이지 이동이 강제적으로 1어 자기 것 자신 cookie정보를 보내는 등의 코드를 삽입하다면 사용자는 영문도 모른 채 개인 정보가 유출될 수 있습니다.방어 우회)(1)사용자 식별 부분 코드 보안, 개인적 정보, 사용자 식별과 마찬가지의 과정은 쿠키에 전부 sound에서 없음을 장려하고 세션은 서버에서 발발에 쿠키보다는 낫다고 할 수 우쟈 신 셋션오링이디 값만 지정하고 사용자 로그인 상태를 인식시키기보다 더 많은 세션에 들어온 제보에 의해서 유저를 식별하도록 설계해야 한다.(2)시큐어 코딩 이전에 서술한 SQL Injection에 비하면 게시판 형태로 1어자 신고 공격 방법이기 때문에 특수 문자를 11이 제한하는 것은 1반 사용자의 입장에서 문제가 될 수 있습니다. 필터링을 행해야 할 문자열이 어느 것이 있는지 보다 정밀하게 파악해야 한다. HTML이 자신의 JS function 등의 코드는 꼭 필요한 경우가 아니면 막는 것이 바람직하며 특수문자에 대해 인코딩 변환을 할 수 있도록 제작해야 한다. 나이 때 php환경 1경우 htmlspecialchars(), htmlentities()등에서 html태그를 인식하고 방어를 하는 대표적인 함수가 있습니다.:<>(:(>:>):)#:#":"':'외에도 다양한 공격 기술이 존재하고 해킹 공격 법과 그것에 대한 방어 법에 대한 연구는 효은지에 진 행형 이다니다. 홈페이지 제작을 하는 웹 에이젼시면#1. 마케티은의 가운데#2. 디자인 가운데#3. 개발 중점으로 하는 회사가 있습니다.기초적인 보안이 없으면 만든 홈페이지에서도 언제 망가질지 모른다는 겁니다.보안전문인력이 아니더라도 웹을 전문으로 직종이라면 보안공부는 정말 끊임없이 학습해야 한다고 생각한다.글로 포스팅한 개념이 어느 정도 숙달되어서 스스로 페이지를 만들어 테스트해 보는 IT 인력이라면 또 다른 공격우회법에는 어떤 것이 있는지, 그 우회법을 다시 막을 방법은 어떤 것인지 함께 생각해 볼 필요가 있을 것 같습니다.


    우리는 웹을 통해서 서비스의 가치를 달성하는 링크를 만들어 본인을 향해 갑니다.


    >



    댓글

Designed by Tistory.