POST, GET 전송 데이터 점검

POST, GET 전송 데이터 점검

QA

POST, GET 전송 데이터 점검

본문

보안관련 질문입니다.
보안을 위해서 GET, POST 를 사용할 때 아래와 같이 이런저런 함수로 점검한다는 글을 보았습니다.

  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  ...
  
꼭 이렇게 까지 해야 하나요? 
그냥 htmlspecialchars() 하나만 사용하면 보안에 취약한가요?


꼭 이렇게 겹겹이 쌓아야 하는 이유가 뭔지, 또 그렇다면 php 자체에서 이런 여러가지 함수를 묶은 기능을 하는 함수는 없는지 궁금합니다.

  

이 질문에 댓글 쓰기 :

답변 2

보안하고 큰 차이는 없습니다.

다만 이중 삼중으로 체크를한다고해서 나쁠건 없지만

$_POST 데이터에 굳이 여러 검증을 넣는이유는

db에 입력될때 sql문을 같이 넣을경우 db에 오류가 발생할 수 있기 때문입니다.

post보다는 get이 더 위험하다고 할수있는데

크게 중요한 데이터가 아니라면 굳이 사용하지 않아도됩니다.

답변 감사합니다.

저는 DB에 query를 보낼 mysqli_real_escape_string() 으로 처리해서 넣고,
반대로 DB 에서 가져와서는 htmlspecialchars() 로 처리해서 보여 주려고 합니다.
이 두가지면 충분할까요??

검색하다 보면 하도 겁들을 많이 주어서 웬지 불안해요...ㅠ

$data = trim($data); // 양쪽 공백 제거
$data = stripslashes($data); // addslashes() 함수에 의해 추가된 백슬래시 제거
$data = htmlspecialchars($data); // 태그를 HTML실체값으로 변환

 

위 3개의 함수가 모두 용도가 다릅니다.

보안만 고려하면 말씀하신 것처럼 htmlspecialchars만으로 충분하지만,

변수값의 원활한 활용을 위해서는 모두 해주는 게 좋겠지요.

답변을 작성하시기 전에 로그인 해주세요.
전체 123,157 | RSS
QA 내용 검색

회원로그인

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