가끔 mysql db에 null 값인 데이터가 들어와 있습니다.

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
가끔 mysql db에 null 값인 데이터가 들어와 있습니다.

QA

가끔 mysql db에 null 값인 데이터가 들어와 있습니다.

본문

문의사항을 등록하는 간단한 폼을 만들어서 달아놨습니다.

 

근데 가끔 보면 auto increment로 된 id 값이랑

 

등록시간에 해당하는 datetime을 제외한 나머지가 전부 null 값으로 된 데이터가 db에 등록되 있을 때가 있네요

 

물론 그 항목들은 등록폼에 필수항목으로 지정해놔서 값이 빠지면 db에 등록이 안되도록 해놓은 상태입니다.

 

근데 가끔 보면 null 값들로 된 데이터가 들어와 있어요;;

 

무슨 일일까요?;

 

이미지로 테이블 구조 같이 첨부합니다. ㅠ

 

4882fd88120f6948b7f86141634ded14_1445503406_0448.JPG 

이 질문에 댓글 쓰기 :

답변 2

일단은 전체적인 소스를 봐야 정확한 원인을 알 수 있을 것 같습니다.

 

올려주신 내용만으로는 원인을 추측할 수 밖에 없습니다.

 

유효성 검사는 클라이언트와 서버 두 곳 모두에서 하는 것이 안전합니다.

 

insert 구문이 있는 페이지에서 값이 null 이면 리턴되던가 exit하는 식으로 확인이 필요합니다.

 

가능성이 있는 경우는 어디선가 insert가 있는 페이지가 호출되고 있습니다.

 

서버쪽에서는 유효성 검사가 없으니 호출되면 바로 insert 되는 것 같습니다.

 

insert 페이지를 바로 호출해 보시길 바랍니다.

 

예를 들면 /xx/xx.php 에 insert 구문이 있으면 웹브라우저에 http://도메인/xx/xx.php로 바로 불러봅니다.

 

그래서 동일한 증상이 발생되면 어디선가 그 페이지를 호출하고 있습니다.

 

그 이상의 답변은 저의 레벨에서 지금 주신 정보만으로는 힘들 것 같습니다.

 

만약 어느 페이지에서 유입이 되었는지 확인하시려면 referer를 체크해서 디비에 남기는 것도 하나의 방법이 될 수 있습니다.

 

위에 분의 댓글을 읽으니 봇에서 해당 페이지를 읽으면서 insert 되는 경우도 있을 듯 합니다.

아! 말씀하신 그 가능성이 맞는 거 같네요.. 업데이트 되는 페이지가 제가 임의로 만든페이지인데.. 어디서 호출하는 건지 모르겠지만 그 페이지만 따로 읽지 못하게 하는 방법을 찾아봐야겠네요. 감사합니다 ^^

id 값은 auto_increment와 기본키로 설정하시면 NULL값이 들어가지 않을건데....흠....

나머지는 NOT NULL로 설정하시거나 기본값을 ''로 지정해주시면 됩니다.

 

위에는 DB단 설정이고...

 

폼 처리페이지에서 빈값을 체크해주셔야 합니다.

안 그럼 구글봇이나 기타 등등이 페이지를 읽어가면서 실행시킬수도 있습니다.

 

만약 정상적으로 폼작성시 NULL값이 들어간다면...

제대로 파라미터처리를 안하신거겠죠.ㅎ 

답변을 작성하시기 전에 로그인 해주세요.
전체 3

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT