dev/PHP + MYSQL
php 보안 filtering escaping
dev_0hoon
2021. 8. 10. 18:20
filterling
sql인젝션을 막는 방법
$filtered = array(
'title' => mysqli_real_escape_string($conn,$_POST['title']),
'description'=>mysqli_real_escape_string($conn,$_POST['description'])
);
-- SELECT * FROM TOPIC;
앞에 --는 무시하라는 의미이다.
SELECT * FROM TOPIC;-- WHERE ID =1 ;
이렇게 사용하면 WHERE 절도 무시가 된다.
이렇게 만약 이런형식으로 SQL구문을 만들어 넣는다면
이전의 값을 ''와 -- 를 이용해 구문을 만들어 넣는다면 의도하지 않는 값
특히 이전글 최신글에 영향이 갈 것이다.
mysqli_real_escape_string($conn,$_POST['description']) 이 함수는 그걸 막아주며
'' 로 들어오는 값을 \'\'로 문자화시켜준다
ESCAPING
만약 입력란에 <SCRIPT> 태그를 넣어 값을 넣어버린다면
어떻게 될까? 아니면 링크를 넣는다면 어떻게 될까
운이 좋으면 다른 사이트로 이동정도지만
나쁜경우 사용자의 정보를 뺴앗아 가는 코드를 넣을 수도 있다.
echo htmlspecialchars('<script>alert</script>');
이명령어는 스크립트 태그부분을 &ls 같은 모양으로 바꿔준다.