개발일기

PHP - addslashes(), stripslashes() 본문

프로그래밍 언어/PHP - Laravel

PHP - addslashes(), stripslashes()

Flashback 2022. 7. 18. 19:25
728x90
반응형

1. addslashes()

PHP에서 문자열을 표시할 때, "(큰 따옴표)와 '(작은 따옴표)가 문자열에 포함되어 있는 경우 오류가 발생하는 경우가 있다. DB에서 값을 가져올 때, 또는 넣을 때 이러한 오류를 방지하고자 addslashesstripslashes를 사용한다.

사용시, 이스케이프 처리되며 오류없이 실행할 수 있다.

 

<?php
	$str = "my name is 'jelly'";
?>
<div data-name='<?php $str ?>'>
	<?php echo $str ?>
</div>

<!-- 오류 발생 -->

 

 

만약 위와 같이 str변수에 있는 값을 div태그의 data 요소에 집어넣는다고 가정해보자. data-name 속성값을 선언하기 위해 작은 따옴표(')를 사용하였다. 하지만 그 뒤에 나오는 str변수에는 작은 따옴표(')가 포함되어져 있다.

이로 인하여 개발자가 넣고자 하는 값이 data-name 속성에 들어가는 것이 아니라 my name is 부분까지만 잘려서 들어가게 된다. 잘못된 값의 삽입으로 인해 데이터베이스와의 통신, 또는 해당 태그에 onClick 등의 이벤트가 포함되어져 있다면, 오류가 발생하게 된다.

 

 

이를 방지하기 위해 addslashes를 사용한다.

<?php
	$str = "my name is 'jelly'";
?>
<div data-name='<?php addslashes($str); ?>'>
	<?php echo $str ?>
</div>

<!-- 정상 실행 -->

 

addslashes를 추가해주면

my name is \'jelly\'

와 같이 실행결과가 나오게 된다. addslashes로 인해 백슬래시가 자동으로 들어가지기 때문에 문자열과 data-name 속성에 값이 정상적으로 대입되고 오류가 발생하지 않는 것을 확인할 수 있다.

 

 

2. stripslashes()

stripslashes는 addslashes로 인해 문자열에 추가된 백스페이스를 제거해주는 함수이다.

<?php
    $str = "my name is 'jelly'";
    $str = addslashes($str);
    echo stripslashes($str);
?>

addslashes로 백스페이스가 생긴 문자열의 백스페이스를 제거하여 출력한다. 위의 실행결과는 다음과 같다.

 

my name is 'jelly'

 


참고사이트 : 

 

https://www.php.net/manual/en/function.addslashes.php

 

PHP: addslashes - Manual

spamdunk at home dot com, your way is dangerous on PostgreSQL (and presumably MySQL). You're quite correct that ANSI SQL specifies using ' to escape, but those databases also support \ for escaping (in violation of the standard, I think). Which means that

www.php.net

https://www.php.net/manual/en/function.stripslashes.php

 

PHP: stripslashes - Manual

 

www.php.net

 

728x90
반응형
Comments