본문 바로가기

개발과제/보안추가

(7)
파일 업로드 다운로드 코드(DB에 저장하기) 안녕하세요 제가 만든 게시판에는 제 서버에 직접 파일을 넣고 그리고 그 파일을 다운로드하게 했잖아요? 그러면 취약점이 될 수 있습니다. 아무리 화이트 리스트나 블랙리스트를 작성해도 나중에 가서 우회하는 방법이 나올 수 있죠. 그런데 그런 파일들을 DB에 저장하게 하면 걱정이 없죠 악성코드든 어느 파일이든 DB에서는 실행이 불가능하니깐요! 그러니 보안 코딩을 하겠습니다. 우선적으로 저희는 CLOB랑 BLOB을 알아야 합니다. - CLOB(Character Large Object) 문자형 대용량 객체 고정길이와 가변 길이 문자집합 지원 이라고 하는데 쉽게 말씀드리자면 엄청 긴 문자열 데이터를 저장하기 위해 사용됩니다. 그래서 텍스트 문서, XML 데이터, 소스 코드 등 텍스트 기반 데이터를 저장하는 데 적합..
[노말틱 모의 해킹 취업반 추가 개발과제 ] XSS 방지 안녕하세요 제 사이트 XSS 공격이 있나 해서 확인했는 데 있어서 수정하겠습니다. 발견된 건 한 개여서 그것만 수정하면 됩니다. -board.php MENU
[노말틱 모의 해킹 취업반 추가 개발과제 ] PreparedStatement 적용하기 -2 안녕하세요 전에 하던 거 이어서 PreparedStatement를 계속 적용하겠습니다. -inquiry_board.php board.php와 거의 똑같게 복사붙이 기하겠습니다. INQUIRY_MENU
[노말틱 모의 해킹 취업반 추가 개발과제 ] PreparedStatement 적용하기 -1 제가 만든 PHP문에서 SQL문을 보안이 더욱 강력한 PreparedStatement 방식으로 전부 바꾸겠습니다. 다하면 너무 길거 같으니 나누어서 올리겠습니다. PreparedStatement란? 영어 단어를 그대로 보시면 준비된 문장입니다. SQL 쿼리 문장을 미리 준비한 후, 데이터베이스에 전달하여 실행하는 방식입니다! 장점으로 보안성이 좋아지고 성능이 향상되고 코드의 가독성이 좋아집니다. 즉 먼저 SQL문장을 준비하고 그 뒤에 오는 문자들은 전부 문자로 처리하는 겁니다. . . . 그래서 안 쓸 이유가 없죠! 저도 쓰겠습니다. 힘내볼게요! 시간이 남으면 각 기능별로 폴더 나누어서 분류를 하겠습니다. 적용하는 것은 간단해요 escape 함수를 전부 지우고 preparedstatement 적용하면 됩..
[노말틱 모의 해킹 취업반 개발과제 (3)] 보안 관련해서 보완 하기 안녕하세요! 저는 이태까지 GET방식이든 POST 방식이든 일단 받으면 mysqli escape 시켜서 SQL Injection을 피하려고 했습니다! 근데 이제 스크립트 인젝션을 방지하기 위해 filter_var() 함수을 이용하겠습니다. 숫자값이 들어와야 하는데 숫자 이외의 값이 들어오는 것을 걸러내는 필터링 작업해 주는 함수도 있습니다 filter_var() 함수 입니다. 예시 보겠습니다 이렇게 악의적으로 쓸 수 있습니다. 이제 output에는 filter_var 함수로 걸러지고 나오게 해 보았습니다. 이렇게 자바 스크립트가 아예 실행 안 되는 것을 볼 수 있습니다. 실제로 저렇게 html 구문인 ,'," 등 html에 쓰이는 특수기호를 전부 무시합니다. 근데 또 불안하죠 호출은 안전하지만 내부에서 ..
[노말틱 모의 해킹 취업반 개발과제 (2)] 보안 관련해서 보완 하기 안녕하세요! 이태까지 제가 만든 웹 사이트에 보안을 좀 더 보완하겠습니다! 오늘은 파일 업로드에 보안을 좀 더 강화하겠습니다 저는 지정한 디렉터리에 저장을 하게 했는데 이는 적절한 보안 조치 없이 그냥 업로드된 파일에 대한 완전한 제어를 허용합니다! 그래서 보안에 취약하겠죠?? 더군다나 텍스트 파일, 압축파일 형식이니 악의적인 파일이 업로드될 수 있죠 그러니 저는 이걸 방지하기 위해 파일 확장자 검증 하겠습니다. 여기서 의문점이 있을 수 있습니다. -따로 MIME 형식에서 허락된 것만 변수로 모은 게 있잖아요?? 맞아요! 저희는 $allowed_mime_types에다가 형식자를 저장했죠? 근데 클라이언트는 파일 형식을. php을 바꿔서 .exe로 바꾸던가 .txt로 바꿔서 올릴 수가 있습니다! 이러면 문..
[노말틱 모의 해킹 취업반 개발과제 (1)] 보안 관련해서 보완 하기 안녕하세요 제가 개발과제 2주 차 2번까지 즉 로그인 페이지까지 만들었습니다. 그런데 코딩 하면서 보안상 문제가 있더라고요! 그래서 그 보안을 지키기 위해 점차 고쳐 나가겠습니다. 아마 지금은 1이고 다음에 만들면서 보안 문제가 보일 때마다 추가하겠습니다 되도록이면 만들면서 보안 지키겠습니다! . . . 시작하죠 우선 sql injection의 공격을 피하기 위해 mysqli_real_escape_string() 적용시키겠습니다! sql injection은 간단히 말해 저희가 sql문을 작성해 보내는데 평범한 'rerange' 같은 문자가 아닌 DROP TABLE 이렇게 sql 문을 적어서 제 데이터베이스에 악영향을 끼치게 하는 공격입니다. https://www.youtube.com/watch?v=Xgb..