데이터베이스

프롤로그 빠르게 파이썬과 MySQL 연동해야할 일이 생겨서 서둘러서 진도 나가야겠다. 백업과 복원 데이터베이스 관리 측면에서 가장 중요한 주제 중 하나. 현재의 데이터베이스를 다른 매체에 보관하는 작업을 말하며 복원은 데이터베이스에 문제가 발생했을 때 다른 매체에 백업된 데이터를 이용해서 원 상태로 돌려 놓는 작업 실습 일단 DB백업이라는 폴더를 만들어서 이를 다른 디스크라고 가정하자. workbench에서 USE ShopDB; SELECT * FROM productTBL; 를 입력해보면 기존에 작업하던 거 데이터들이 있다. 이제 백업부터 해보자. (1) 백업 왼쪽 Navigator -> Administration 을 누르면 MANAGEMENT 부분에 Data Export 부분이 있고 여기서 내가 내보내..
프롤로그 데이터베이스 개체의 활용 드디어 마지막 파트이다. 트리커 테이블에 부착되어서 테이블에 INSERT나 UPDATE 또는 DELETE 작업이 발생되면 실행되는 코드를 말한다. 나중에 다시 나온다. X라는 사람이 회원탈퇴를 하였을 때 이게 누구누구인지 정보를 어떻게 알 수 잇을까? 이미 데이터베이스에서 행 데이터가 삭제되었는데 말이다. 이때 행 데이터를 삭제하기 전에 그 내용을 다른 곳에 먼저 복사해 놓으면 된다. 이걸 수작업으로 하지 않고 다른 곳에 자동으로 저장해주는 기능이 트리거이다. 실습 (1) SQL 데이터 생성, 수정, 삭제 확인 INSERT INTO memberTBL VALUES ('Figure', '연아', '경기도 군포시 당정동'); 로 생성을 하고 SELECT * FROM membe..
프롤로그 Stored Procedure 스토어드 프로시저...이름 길다 스토어드 프로시저 스토어드 프로시저란 MySQL에서 제공해주는 프로그래밍 기능을 말한다. 즉 SQL 문을 하나로 묶어서 편리하게 사용하는 기능이다. 실무에서 SQL문(주로 SELECT)을 매번 하나하나 수행하기 보다는 스토어드 프로시저로 만들어 놓은 후에 스토어드 프로시저를 호출하는 방식을 많이 사용한다. 실습 매번 회원 테이블 "당탕이"의 정보와 제품 테이블의 " 냉장고"의 정보를 동시에 조회한다고 가정하자 shopdb인지 확인하자 매번 조회를 해야한다면 SELECT * FROM memberTBL WHERE memberName = "당탕이"; SELECT * FROM productTBL WHERE productNAME = "냉장고"..
프롤로그 인덱스, 뷰, 스토어드 프로시저, 트리거 이렇게 4개를 각각의 글로 생성하면 양산형 글이 될 거 같아서 하기는 싫은데, 아예 나도 처음 배우는 개념이고 따로 적어서 따로 정리한 거 보는 게 나을 거 같아서 그냥 ...해야지..뭐; 뷰(View) 뷰란 가상의 테이블이다. 사용자 입장에서는 테이블과 동일하게 보이지만 뷰는 실제 행 데이터를 가지고 있지 않다. 그 실체는 없는 것이며, 진짜 테이블에 링크된 개념이다. 그래서 뷰를 SELECt 하면 결국 진짜 테이블의 데이터를 조회하는 것과 같다. 우리가 기존에 생성했던 회원테이블에서 아르바이트 같은 사람에게 회원 전체 정보를 보여줄 수 없으니 아이디와 주소만 보여주기 위해 뷰를 사용하는 것이다. 그래서 개인정보등 중요한 정보는 이 사람이 볼 수 없다...
프롤로그 데이터 베이스 안에 테이블만 표현하고 저번 글 2024.01.17 - [데이터베이스] - [데이터베이스] 데이터베이스 구축 절차 #3 [데이터베이스] 데이터베이스 구축 절차 #3 프롤로그 아 할 거 너무 많은데....큰일났다;; 정보 시스템 구축 절차 분석->설계->구현->시험->유지보수 분석 : 구현하고자 하는 프로젝트의 가장 첫 단계. 시스템 분석 또는 요구사항 분석. "what" taesan-smj.tistory.com 에서도 테이블 생성하고 데이터를 넣는 과정을 배웠다. 이게 기본적이고 중요하긴 하지만 테이블만 가지고 실무에서 데이터베이스를 운영하지 않는다. 다른 데이터베이스 개체로는 인덱스, 스토어드 프로시저, 트리거, 함수, 트리거 커서 등이 있지만 이번엔 인덱스만 알아보자. 인덱스 ..
프롤로그 아 할 거 너무 많은데....큰일났다;; 정보 시스템 구축 절차 분석->설계->구현->시험->유지보수 분석 : 구현하고자 하는 프로젝트의 가장 첫 단계. 시스템 분석 또는 요구사항 분석. "what" 즉 무엇을 할 것인가 결정 설계 : 우리가 구축하고자 하는 시스템을 "How" 즉 어떻게 할 것인가 결정 나머지는 알아서 프로그래머가 다 한다. 그래서 분석 설계가 끝나면 50% 이상이 끝난다. 데이터베이스 모델링과 필수 용어 -데이터베이스 모델링 : 분석과 설계 과정 중에서 가장 중요한 과정. 현실세계에서 사용되는 데이터를 MySQL에 어떻게 옮겨 놓을 것인가 결정하는 과정. 정보들을 단편적으로 저장하는 것이 아니라 테이블이라는 형식에 맞춰서 넣어야한다. -데이터 : 단편적인 정보. 정보는 있으나..
NoSQL Injection 이전의 SQL Injection과 공격 목적 및 방법이 매우 유사하다. 두 공격 모두 이용자의 입력값이 쿼리에 포함되면서 발생하는 문제점으로써, 이용자의 입력값에 대한 타입 검증이 불충분할 때 발생한다. No SQL중 하나인 MongoDB는 정수, 날짜, 실수 이외에도 오브젝트, 배열 타입을 사용할 수 있는데 오브젝트 타입의 입력값을 처리할 때 쿼리 연산자를 사용할 때 다양한 행위를 할 수 있다. https://docs.mongodb.com/manual/reference/operator/query/type/ $type — MongoDB Manual Docs Home → MongoDB Manual $type$type selects documents where the value ..
프롤로그 simple_sqli 워게임 문제에서 Bilnd SQL Inejction 해볼려고 했는데 안 됐다; 자꾸 requests 모델이 없다는데 파이썬 새 버전 설치에 별 거 다해봤는데 안 돼서 그냥 비관계형 DBMS 로 넘어왔다. NRDMBS(NoSQL) RDBMS의 단점은 저장해야하는 데이터가 많아지면 용량의 한계에 다다를 수 있는 것인데, 이를 해결하기 위해서 나왔다. RDBMS는 SQL를 사용해 데이터를 조회 및 추가 그리고 삭제할 수 있었는데, NoSQL은 SQL를 사용하지 않고 복잡하지 않은 데이터를 저장해 단순 검색 및 추가 검색 작업을 위해 매우 최적화된 저장 공간이 큰 특징이고 관계형과의 차이점이 있다. 관계형은 SQL이라는 정해진 문법으로 데이터를 저장하기에 SQL이 필수인데, NoS..
프롤로그 이 카테고리는 이것이 MySQL 이다를 보며 데이터베이스 보안을 위해 데이터베이스를 공부하는 공간이다. MySQL 설치하기 https://dev.mysql.com/downloads/installer/ MySQL :: Download MySQL Installer Note: MySQL 8.0 is the final series with MySQL Installer. As of MySQL 8.1, use a MySQL product's MSI or Zip archive for installation. MySQL Server 8.1 and higher also bundle MySQL Configurator, a tool that helps configure MySQL Server. dev.mysql.c..
프롤로그 이 카테고리는 이것이 MySQL 이다를 보며 데이터베이스 보안을 위해 데이터베이스를 공부하는 공간이다. 데이터베이스 정의 데이터베이스 : 데이터의 집합 DBMS : 데이터베이스를 관리, 운영하는 역할, 여러 명의 사용자나 응용 프로그램이 공유하고 동시에 접근 가능하여야 함. MySQL, MariaDB, Oracle... 등등이 있음. 데이터베이스 특징 - 무결성 데이터베이스 안의 데이터는 어떤 경로를 통해 들어왔던지 데이터에 오류가 있어서는 안 됨. 무결성을 위해서 데이터베이스는 제약조건이라는 특성을 가짐(ex) 중복 불가, 반드시 포함되기 등...) -데이터의 독립성 데이터베이스의 크기를 변경하건가 데이터 파일의 저장소를 변경하더라도 기존에 작성된 응용프로그램은 전혀 영향 받으면 안 됨 -> ..
문제 https://dreamhack.io/wargame/challenges/24/ simple_sqli 로그인 서비스입니다. SQL INJECTION 취약점을 통해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다. Reference Server-side Basic dreamhack.io 문제코드 #!/usr/bin/python3 from flask import Flask, request, render_template, g import sqlite3 import os import binascii app = Flask(__name__) app.secret_key = os.urandom(32) try: FLAG = open('./flag.txt', 'r').read() except:..
프롤로그 제목에서부터 SQL Injection 나온다. 인터넷 뒤져봤는데, 각 고객 정보 유출....핸드폰번호 등의 고객정보 유출 등이 있을 때 SQL 인젝션 공격흔적이란 단어가 나온다. 사용자가 입력값에 필터링이 제대로 적용돼 있지 않을 때 발생한다고 되어 있는데, 공겨자가 조작된 SQL 질의문을 삽입해 웹 서버 DB정보를 열람하고 정보를 유출, 조작한다라고 되어 있다. 그러니까 SQL을 좀 알아야할 것 같다. 근데 내가 아는 건 Create table, update table 이거 딱 2개만 해봤는데 큰일났다. 서론 Injection(인젝션) : 주입, 이용자의 입력값이 어플리케이션의 처리과정에서 구조나 문법적인 데이터로 해석되어 발생하는 취약점 SQL Injection SQL : DBMS에 데이터를..
성밍쟁
'데이터베이스' 태그의 글 목록