ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 웹페이지의 기본 보안 SQL In 볼께요
    카테고리 없음 2020. 1. 22. 01:34

    안녕하세요 윈드 디자인입니다.홈페이지 제작에서 웹사이트 보안의 기초적으로 어떤 것이 있는지 간단하게 포스팅하려고 할 것이다.(디자인회사이지만 개발자가 많아서...) 저도 개발자 출신이기 때문에... 후술하는 웹해킹 공격법은 오래 전부터 존재하고 있고, 다양한 IT서적에도 기본으로 기술되어 있기 때문에 대부분의 홈페이지 및 프레임워크, 게시판 솔루션 등은 이러한 공격법에 대해 어느 정도 대비가 되어 있습니다.많은 Web/서버 호스팅 업체에서 관련 보안 솔루션을 제공하는 것도 있지만 그 기본적인 해킹 법에 대해서 모든 개발자가 지속적으로 학습해야 하고 어떤 방법으로 접근하는지에 대해서 그 최소한의 소양은 알아 두셔야 합니다.)소스를 단순히 가지고 가서 사용할 뿐만 아니라, 읽을 수 있는 능력, 코드를 1씩 보지 못해도, 코드를 보고 그 실현 과정과 알고리즘을 이해하는 것이 프로그래머의 필수 덕목이 아닌가 및 소견하는 것이다.


     


    >


    >


    SQL 은 데이터베이스를 접속하여 제어할 수 있는 구조화질어입니다.SQL을 실제로 작성할 수 있는 권한을 가진 사람은 데이터베이스 관리자 및 서버 관리자 정도입니다.그런 본인의 웹 게시판, 동적인 문서 페이지가 있는 경우 악의적인 사용자가 애플리케이션의 취약점을 이용하여 개발자, 관리자가 예상치 못한 SQL을 실행하도록 함으로써 데이터베이스를 조작할 수 있고, 이를 SQL 인젝션(Injection)이라고 합니다.대표적으로 게시판 로그인 구문이 있습니다.페이지 로그인 쿼리가 모두 sound와 동일하면 가족입니다.SELECT * FROM TABLE WHERE id = '어린이 ID' AND password = '패스워드'를 보려면 일반적으로 로그인이 가능한 본인 없는 본인에 관해 검증하는 쿼리입니다.어린 아이디가 danny, 비밀 번호가 abcd는 SELECT*FROM TABLE WHERE id='danny'AND password='abcd'이런 형태가 되겠지만 비밀 번호를 혹시'or'1'='1(공간의 공백을 포함)에 입력하면 SELECT*FROM TABLE WHERE id='danny'AND password=''or'1'='1'이런 문구에 완성이 되고 이 조건은 마지막 1=1이라는 조건이 100Percent곳이어서 아무런 방어 본인 우회 코드가 없으면 이 코드로 로그인이 가능합니다.(**모두 이 비결은 가장 고전적이고 방어가 대부분 되어 있어 본인 호기심이라도 현재 운영하고 있는 사이트에서 연구하는 것은 사이버범죄 행위로 분류되니 절대 하지 말고 자신의 서버에서 테스트용으로 사용하십시오.) ) 이 형태는 가장 반쪽적인 형태이며, UNION, JOIN, DROP 등의 코드를 사용하면 더 많은 데이터베이스를 조회, 조작할 수 있습니다.방어 우회)SQL인젝션은 다양한 형태로 공격이 되고, 해킹 기술도 한 계속적으로 발전하는 데 100Percent방위 법은 없습니다. 방어할 수 있는 비결을 감정하고 현존하는 방어법이 구성된 코드를 수용하고 이해하는 과정이 필요하다고 보이 다닌다.(1)데이터베이스 저장 프로시저(StoredProcedure)사용 데이터베이스와 연동 과정에서 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정보를 보내는 등의 코드를 삽입합니다 면 사용자는 영문도 모른 채 개인 정보가 공 게이 바랍니다.방어, 우회)(꽃) 사용자 식별 부분 코드 보안, 개인적 정보, 사용자 식별과 같은 과정은 쿠키에 다음이 없음을 장려하며, 세션은 서버에서 발발에 쿠키보다는 낫다고 할 수 있지만 세션 아이디 가격만 지정하여 사용자 로그인 상태를 인식시키는 것보다 더 많은 세션에 들어 있는 정보에 의해 사용자를 식별하도록 설계하여야 한다.(2)시큐어 코딩 이전에 서술한 SQL Injection에 비하면 게시판 형태로 1어하는 공격 방법이기 때문에 특수 문자를 그때마다 제한하는 것은 1반 사용자의 입장에서 사건이 됩니다. 필터링을 실시해야 할 문자열이 어느 것이 있는지 보다 정밀하게 파악해야 할 것이다. HTML이나 JS function 등의 코드는 꼭 필요한 경우가 아니면 막는 것이 바람직하며, 특수문자에 대해 인코딩 변환을 해주도록 제작할 필요가 있다. 가령 php환경 1경우 htmlspecialchars(), htmlentities()등에서 html태그를 인식하고 방어를 하는 대표적인 함수가 있습니다.:<>(:(>:>):가지#:#":"':'외에도 다양한 공격 기술이 존재하고 해킹 공격 법과 그것에 대한 방어 법에 대한 연구는 현재 진행형입니다. 홈페이지 제작하는 웹 에이젼시면#1. 광고 가운데#2. 디자인 가운데#3. 개발 중점으로 하는 회사가 있습니다.기초적인 보안이 없으면 만든 홈페이지에서도 언제 망가질지 모른다는 겁니다.보안 전문 인력이 아니더라도 웹을 전문으로 직종이라면 보안 공부는 열정적입니다.없이 학습해야 합니다라는 견해를 보인다.글로 포스팅한 개념이 어느 정도 숙달되어서 스스로 페이지를 만들어서 테스트해 보는 IT 인력이라면 또 다른 공격우회법에는 어떤 것들이 있는지, 그 우회법을 다시 막을 방법은 무엇이 있는지 다 같이 생각해 볼 필요가 있을 것 같습니다.


    우리는 웹을 통해 서비스의 가치를 전달하는 링크를 만들어서 나쁘지 않습니다.


    >



    댓글

Designed by Tistory.