마구니 패치 노트21 서버 해킹 대응 5월 28일 개발을 위해 데이터베이스 필드를 자주 확인해야하기 때문에ufw의 3306포트를 열고 외부의3306과 포트를 연결해두었다포트를 오픈한지 2일만에 3306으로 지속적인 접근시도가 있었고2일만에 로그를 통해 확인했다sudo journalctl -u mariadb //DB로그 확인무수한 악수요청... 몇가지 인상적인로그를 분석해봤다시도된 명령(root) CMD ([ -x /etc/init.d/anacron ] && if [ ! -d /run/systemd/system ];then /usr/sbin/invoke-rc.d anacron start >/dev/null; fi)시도된 접근2024-06-01 8:01:37 1116 [Warning]Aborted connection 1116 to db: 'u.. 2024. 6. 1. OCI 리눅스 장애(비정상 정지) 원인 기록,결론 얼마전 https 접속을 지원하는 서비스 배포후서비스가 약 4일만에 웹브라우저로 접근불가 상태임을 확인했다로그를 확인하기 위해 ssh 접속을 시도 했지만 kex_exchange_identification: read: Connection reset by peerConnection reset by xxx.xx.xxx.xx port xx서버에서 응답이 없었다브라우저에서 http/s 접근이 불가하다는것은 서비스가 정지 되었다는것이고ssh 접속이 불가능 하다는것은리눅스 서버의 서비스 하나가 문제가 있는것이 아니라서버로 사용중인 인스턴스 자체에 장에가 있었을것이라고 추측했다 오라클클라우드에서는 특별한 알람은 없었고트라이얼 계정의 인스턴스 자원 대비 과한 처리량 때문에 커널패닉같은것이 온것이라 추측했다사용된 리소스 .. 2024. 3. 5. 비밀번호 해싱MD5 > sha256 문제 해결 이전의 비밀번호 암호화 글 https://pushvalue.tistory.com/42 pw 암호화(md5)후 DB에 저장하기 내 프로잭트의 비밀번호 저장 기능은 유저가 입력한 비밀번호 그대로 DB에 저장 된다 이렇게 되면 비밀번호가 노출될 위험이 있다 비밀번호가 그대로 저장되지않고 비밀번호의 해시값을 저장 pushvalue.tistory.com 테스트 코드를 만들면서 테스트코드 전용 데이터베이스가 필요했다 spring boot 에서 내장 데이터베이스를 지원 하기때문에 h2 데이터 베이스를 mysql 모드로 사용 하여 mysql 쿼리문도 연동 되도록 계획 했다 하지만 쿼리문이 완벽하게 연동 되지는 않았다 MD5 해시 함수와 sysdate 함수가 호환 되지 않았다 하는김에 sha256 으로 해싱하고 CURR.. 2023. 5. 19. 서버타임 동기화 배포 자동화를 계속해서 다듬고 있는중에 nohup.out 파일 관리에 필요를 느꼈었다 로그 기능을 추가하기 전에 구버전의 기록이 담긴 out 파일을 그때의 날자로 변경 하여 mylog 폴더에 저장 했는대 이상하게 잘 작동 하던 스크립트가 작동을 하지않았다 if [ -f nohup.out ]; then mv nohup.out nohup_$(date +%Y%m%d).out; mv nohup_$(date +%Y%m%d).out /home/${{ secrets.USER }}/mylog/; fi 굳이 한줄로 작성 된 이유는 github actions 러너가 줄바꿈을 && 로 치환하여 처리하기때문인데 그때문에 가독성을 포기해야 했다 분명 잘 잘동 하는 스크립트였다 하지만 금일은 6일로 nohup.out 파일이 no.. 2023. 5. 6. 자동 배포 개선/기능추가 github actions를 통해 빌드와 배포를 성공하고 2일이 지났다 https://github.com/geonho1943/LFG GitHub - geonho1943/LFG: "Looking For Group" service "Looking For Group" service. Contribute to geonho1943/LFG development by creating an account on GitHub. github.com 프로젝트를 개선하고나서 커밋만 하면 자동으로 배포가 가능하기때문에 더이상 배포를 신경쓰지 않으려고 했지만 자동배포 스크립트에 문제점을 발견하기도 했고 나름의 최적화를 하고싶었기때문에 디버깅도 불편하고 하루에 수십번의 커밋이 거부감이들지만 다시 actions 를 건들여 보기로 했다.. 2023. 3. 31. SQL 쿼리 파라미터 바인딩 %?% 문제 LFG 서비스의 검색기능을 구현하는 중이다 무언가를 조회 할때 파라미터의 값이 정확히 일치 해야만 조회가 가능한 단순한 select문을 검색 기능에 적용하면 검색기능이 너무 불편할것이다 예를들어 스팀 멀티 게임 overcooked! 2 를 검색 하고 싶다면 cooked 만으로도 검색이 가능 하여야 한다 이 기능을 구현하기위해 Like 를 사용하여 부분 일치 조회를 사용, 바인딩될 단어의 앞 뒤에 %를 사용하여 바인딩 될 단어가 게임이름의 어느 위치에 있는지는 상관없이 조회가 가능하도록 하고 싶었다 String sql 문자열에 검색할 파라미터를 바인딩할때 %를 사용하면 '' 때문에 생기는 오류 때문에 시간을 많이 잡아먹었다 sql 문자열에 % 를 입력하는것이 아니라 바인딩할 때 % 같이 쥐어주게되면 '' .. 2023. 3. 3. parsing 후 저장시 데이터 중복 문제 1. 스팀api의 appList를 받아서 파싱후 내db 에 저장하는 기능을 만듬 2. 정상 작동 확인 3. 블로그에 기록 후 잠듬 4. 다음날 파싱기능 수행 전에 테이블 row를 다 날리는 기능을 만듬 5. 정상 작동 확인 6. 어제 만든 파싱,저장 기능 불능 확인 (저장기능이 안되는거였다) 7. executeBatch() 기능에 addbatch 가 약15만5천번 수행 된다는것 확인 (총13MB 용량.. 15만개의 요청..)>> (27만개 였다) DB의 제한설정을 늘린다 or 요청을 나눠서 수행 한다 8. executeBatch 분할 실행 9. Duplicate entry '736800' for key 'PRIMARY' 에러 10. 분할 후 나머지 쿼리 실행에서 기존의 데이터를 다시 insert해서 난 .. 2023. 2. 28. VScode CSS 세팅(여러 선택자 줄바꿈 해결) 내가 사용하는 intelliJ IDEA는 커뮤니티 버전이다 커뮤니티 버전은 무료지만 지원하지않는기능이 많다 웹서버를 만들면서 프론트부분을 구현해야하는경우가 최근들어 많은데 내가 비교적 자신있는 백엔드 보다 당연히 구현하는대 걸리는 시간이 오래 걸렸다 커뮤니티버전은 React,CSS,JS 등등 프론트에대해 지원해주지않는다 https://www.jetbrains.com/ko-kr/products/compare/?product=idea&product=idea-ce JetBrains 제품 비교 www.jetbrains.com 그래서 코드 인스펙션도 안되고 자동 완성이라던가 IDE로서 해택을 받을수 없었다... 부족한 나의 css,js의 실력에 도움이되고자 VSCode에 prettier 를 사용해 프론트를 만들어.. 2023. 2. 17. Null로 로그인 되는 현상 아직 css를 넣지 않았지만 제대로 작동하는 로그인폼이 있다 제대로 입력하지않는다면 에러페이지도 나온다! 회원가입과 다르게 로그인은 user정보 대조후 맞고 안맞고가 확실하기때문에 입력 제약을 걸지않았다 그래서인지 로그인양식을 작성하지 않아도 로그인이 되어버리는 상황을 발견했다 UserModel의 login 구현부에 문제가 있을거라 생각했다 하지만 예외처리는 잘 해놨었고 만약 null이 들어가면 illegalArgument예외처리가 잡아낼것이었다 디버깅을 해보니 null 값이 id,pw 매개변수에 들어갔지만 idx 82를 반환하고있다. 이것은 id,pw 값이 null 인 계정(idx=82)의 user 정보를 가지고 온 것 이다 해당 계정은 로그인 구현중 DB 워크벤치 에서 직접 작성한 계정이였고 id,p.. 2023. 2. 16. 이전 1 2 3 다음