Programming$/Web Develop

[php] xss, sql injection 막기

ch4rli3kop 2019. 5. 7. 07:54
반응형

[php] xss, sql injection 막기



내가 하면 꿀잼이지만, 남이 하면 족같은 xss, sql injection을 방지할 수 있는 함수들을 정리한다.

출처는 이고잉님의 생활코딩이다.


htmlspecialchars("~~~~")

html에서 특수한 의미를 갖는 다음의 문자들을 모양은 같고 의미는 다르도록 치환해준다. 삽입된 javascript 문이 실행되는 것을 막을 수 있다.

CharacterReplacement
& (ampersand)&amp
" (double quote)&quot, unless ENT_NOQUOTES is set
' (single quote) &#039 (for ENT_HTML401) or &apos (for ENT_XML1, ENT_XHTML or ENT_HTML5), but only when ENT_QUOTES is set
< (less than)&lt
> (greater than)&gt
example
$i = 1;
while($row = mysqli_fetch_assoc($result)){
   echo "<tr><td>".$i."</td><td>".htmlspecialchars($row['username']).'</td><td>'.$row['date'].'</td><td>'.$row['score']."</td></tr>";
   $i++;
}


mysqli_real_escape_string

문자열에 포함된 특수 문자들을 escape시켜, 해당 문자가 sql 문에서 오동작을 유발하는 것을 막는다. escape되는 문자들은 NULL, \n, \r, \, ', ", ctrl+z 이다. sql injection을 막는 데에 사용할 수 있다.

example
$conn = mysqli_connect($config['host'],$config['user'],$config['pw']);
mysqli_select_db($conn, $config['database']);

$username = mysqli_real_escape_string($conn, $_POST['username']);
$score = mysqli_real_escape_string($conn, $_POST['score']);


strip_tags

문자열에서 태그들을 모두 없애버리거나, 지정한 특정 태그들만 남기게 할 수 있는 함수이다. 삽입된 코드들을 막는데에 사용할 수 있다.

example
echo strip_tags($row['description'], '<a><h1><h2><h3><h4><h5><ol><ul><li>');


반응형

'Programming$ > Web Develop' 카테고리의 다른 글

[Javascript] CountDown 구현  (0) 2020.08.31
js 변수 값 php로 전달하기  (0) 2019.05.07
[html] form submit action 주의  (0) 2019.05.07
[JavaScript] removeAttribute()  (0) 2019.05.07
[JavaScript] practice 1  (0) 2019.03.06