전체 글

etc

[PHP] PHP보안 - filtering, escaping

Filtering - 입력 문제가 있는 정보의 입력을 막아내는 행위 mysqli_real_escape_string 함수를 이용해 SQL문에 삽입된 따옴표(')를 escape string(/')으로 바꿔줌으로써 SQL injection 공격을 예방할 수 있다. Escaping - 출력 문제가 있는 정보가 이미 입력된 상태에서 그 정보가 사용자들에게 노출되는 상황을 차단하는 행위 htmlspecialchars함수를 이용해 html과 관련된 특수문자(, ", ', %) 등을 변환시킴으로써 웹 페이지에 악성 스크립트를 삽입하는 공격기법인 XSS를 막을 수 있다. Non-persistent XSS vs Persistent XSS 간단한 PHP용 HTML 필터링 함수 function html_filter($cont..

CS/알고리즘 문제 풀이

[백준] 11054 - 가장 긴 바이토닉 부분 수열 [Python(파이썬)]

문제 www.acmicpc.net/problem/11054 11054번: 가장 긴 바이토닉 부분 수열 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) www.acmicpc.net 풀이 가장 큰 증가 부분 수열 문제의 응용 문제다. 이중 for문을 두 번 구성하여 dp[n][0]엔 왼쪽부터 증가하는 가장 긴 부분 수열의 길이를 기록하고, dp[n][1]엔 오른쪽부터 증가하는 가장 긴 부분 수열의 기록을 기록한다. 중복으로 겹쳐지는 부분이 있기 때문에 해를 구할 땐 1을 빼줘야 한다. 코드 import sys n = int(sys.stdin.readline().strip()) a = [int(x) for..

CS/알고리즘 문제 풀이

[백준] 11055 - 가장 큰 증가 부분 수열 [Python(파이썬)]

문제 www.acmicpc.net/problem/11055 11055번: 가장 큰 증가 부분 수열 수열 A가 주어졌을 때, 그 수열의 증가 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 인 경우에 합이 가장 큰 증가 부분 수 www.acmicpc.net 풀이 n = 1000이며, 시간 제한이 1초이므로 대략 O(n^2)시간의 알고리즘을 설계하면 해결할 수 있는 문제다. dp테이블은 입력으로 주어진 수열과 동일하게 초기화시킨다. i가 인덱스 0부터 n-1까지 순회하고, j는 인덱스 0부터 i-1까지 순회한다. 이 과정에서 수열[i]와 수열[j]를 비교하고, 수열[i]가 더 크다면 현재 dp[i]와 ..

CS/네트워크

[네트워크] URL의 이해 - protocol, host, port, path, query

URL의 구조 protocol: 통신규약, 사용자가 서버에 접속할 때 어떤 방식으로 통신할 지 정의한다. HTTP(Hyper Text Transfer Protocol): 웹 브라우저와 웹 서버가 서로 데이터(하이퍼 텍스트)를 주고받기 위해 만든 통신규약 HTTPS(Hyper Text Transter Protocol Secure): HTTP에서 보안이 강화된 버전. 자세한 설명은 영상을 참고 host(domain): 인터넷에 접속되어 있는 각각의 컴퓨터를 가리키는 주소 port: 포트번호 한 개의 컴퓨터엔 여러 개의 서버가 존재할 수 있다. 즉, 포트번호를 통해 어떤 서버를 이용할 지 결정한다. 웹서버는 전세계적으로 80번 포트를 이용하는 것이 표준이다. 따라서 url엔 기본적으로 포트번호 80이 생략되어..

웹/FastAPI

[FastAPI] 이미지 파일 업로드하기

Uploding Image File 이미지 파일을 업로드한 뒤, 서버에서 해당 파일에 접근할 수 있는 기능을 구현하고자 했다. 많은 삽질 끝에 하긴 했지만 상당한 리팩토링이 필요할 것 같다. 1. 먼저 로컬에서 파일이 저장될 경로와 파일에 접근할 수 있는 url을 선언한다. 현재 경로는 backend/routes/menu.py고 로컬에서 파일이 저장될 경로는 backend/static/images이다. 2. 요청로부터 이미지 파일을 받기 위해 File과 UploadFile을 import한다. UploadFile은 유효성 검사를 해주는데, 에러를 검출해주기 때문에 유용하다. 3. 기존 작성해둔 스키마에선 이미지에 NULL을 허용했다. 따라서 이미지 파일이 존재하는지 확인한 후, 파일이 있다면 해당 파일을 ..