POST, GET 전송 데이터 점검
본문
보안관련 질문입니다.
보안을 위해서 GET, POST 를 사용할 때 아래와 같이 이런저런 함수로 점검한다는 글을 보았습니다.
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
...
꼭 이렇게 까지 해야 하나요?
그냥 htmlspecialchars() 하나만 사용하면 보안에 취약한가요?
꼭 이렇게 겹겹이 쌓아야 하는 이유가 뭔지, 또 그렇다면 php 자체에서 이런 여러가지 함수를 묶은 기능을 하는 함수는 없는지 궁금합니다.
답변 2
보안하고 큰 차이는 없습니다.
다만 이중 삼중으로 체크를한다고해서 나쁠건 없지만
$_POST 데이터에 굳이 여러 검증을 넣는이유는
db에 입력될때 sql문을 같이 넣을경우 db에 오류가 발생할 수 있기 때문입니다.
post보다는 get이 더 위험하다고 할수있는데
크게 중요한 데이터가 아니라면 굳이 사용하지 않아도됩니다.
$data = trim($data); // 양쪽 공백 제거
$data = stripslashes($data); // addslashes() 함수에 의해 추가된 백슬래시 제거
$data = htmlspecialchars($data); // 태그를 HTML실체값으로 변환
위 3개의 함수가 모두 용도가 다릅니다.
보안만 고려하면 말씀하신 것처럼 htmlspecialchars만으로 충분하지만,
변수값의 원활한 활용을 위해서는 모두 해주는 게 좋겠지요.
답변을 작성하시기 전에 로그인 해주세요.