PHP에서 일반적으로 사용되는 이스케이프 함수는 무엇입니까?

L
풀어 주다: 2023-03-01 09:50:01
원래의
2708명이 탐색했습니다.

PHP에서 일반적으로 사용되는 이스케이프 함수는 무엇입니까?

php

1에서 일반적으로 사용되는 이스케이프 함수.addslashesaddslashes

addslashes对SQL语句中的特殊字符进行转义操作,包括(‘), (“), (), (NUL)四个字符,此函数在DBMS没有自己的转义函数时候使用,但是如果DBMS有自己的转义函数,那么推荐使用原装函数,比如MySQL有mysql_real_escape_string函数用来转义SQL。 

注意在PHP5.3之前,magic_quotes_gpc是默认开启的,其主要是在$GET, $POST, $COOKIE上执行addslashes操作,所以不需要在这些变量上重复调用addslashes,否则会double escaping的。

不过magic_quotes_gpc在PHP5.3就已经被废弃,从PHP5.4开始就已经被移除了,如果使用PHP最新版本可以不用担心这个问题。stripslashes为addslashes的unescape函数。


2. htmlspecialchars

htmlspecialchars把HTML中的几个特殊字符转义成HTML Entity(格式:&xxxx;)形式,包括(&),(‘),(“),(<),(>)五个字符。

& (AND) => &
” (双引号) => " (当ENT_NOQUOTES没有设置的时候)
‘ (单引号) => ' (当ENT_QUOTES设置)
< (小于号) => <
> (大于号) => >  

htmlspecialchars可以用来过滤$GET,$POST,$COOKIE数据,预防XSS。

注意htmlspecialchars函数只是把认为有安全隐患的HTML字符进行转义,如果想要把HTML所有可以转义的字符都进行转义的话请使用htmlentities。htmlspecialchars_decode为htmlspecialchars的decode函数。

3. htmlentities

htmlentities把HTML中可以转义的内容转义成HTML Entity。html_entity_decode为htmlentities的decode函数。

4. mysql_real_escape_string

mysql_real_escape_string会调用MySQL的库函数mysql_real_escape_string,对(x00), (n), (r), (), (‘), (x1a)进行转义,即在前面添加反斜杠(),预防SQL注入。

注意你不需要在读取数据库数据的时候调用stripslashes来进行unescape,因为这些反斜杠是在数据库执行SQL的时候添加的,当把数据写入到数据库的时候反斜杠会被移除,所以写入到数据库的内容就是原始数据,并不会在前面多了反斜杠。

5. strip_tags
addslashes는 ('), (") , (), (NUL을 포함하여 SQL 문의 특수 문자를 이스케이프합니다. ) 4자. DBMS에 자체 Escape 기능이 없을 때 사용하는 함수이다. 그러나 DBMS에 자체 Escape 기능이 있는 경우에는 원래의 기능을 사용하는 것이 좋다. 예를 들어 MySQL에는 SQL을 Escape하는 기능이 있다.

PHP5.3 이전에는 Magic_quotes_gpc가 기본적으로 활성화되어 주로 $GET, $POST 및 $COOKIE에 대해 추가 작업을 수행했으므로 이러한 변수에 대해 추가 작업을 반복적으로 호출할 필요가 없습니다. 그렇지 않으면 이중 이스케이프가 발생합니다.

그러나 Magic_quotes_gpc는 PHP5.3에서 더 이상 사용되지 않으며 PHP5.4부터 제거되었습니다. 최신 버전의 PHP를 사용하는 경우 Stripslashes는 addlashes의 이스케이프 기능에 대해 걱정할 필요가 없습니다.

2. htmlspecialchars

htmlspecialchars는 HTML의 여러 특수 문자를 (&), ('), ("), (< ), (> ;) 5자입니다. 🎜
🎜& (AND) => &🎜” (큰따옴표) => " (ENT_NOQUOTES가 설정되지 않은 경우)🎜' (작은따옴표) => ' (ENT_QUOTES가 설정된 경우)🎜< ( 보다 작음) => <🎜> (보다 큼) => > 🎜🎜html특수 문자는 XSS를 방지하기 위해 $GET, $POST, $COOKIE 데이터를 필터링하는 데 사용할 수 있습니다. 🎜🎜htmlspecialchars 함수는 보안 위험이 있는 것으로 간주되는 HTML 문자만 이스케이프 처리한다는 점에 유의하세요. HTML에서 이스케이프할 수 있는 모든 문자를 이스케이프하려면 htmlentities를 사용하세요. htmlspecialchars_decode는 htmlspecialchars의 디코드 기능입니다. 🎜🎜3. htmlentities🎜🎜htmlentities는 HTML의 이스케이프 가능한 콘텐츠를 HTML 엔터티로 이스케이프합니다. html_entity_decode는 htmlentities의 디코드 기능입니다. 🎜🎜4.mysql_real_escape_string🎜🎜mysql_real_escape_string은 MySQL 라이브러리 함수 mysql_real_escape_string을 호출하여 (x00), (n), (r), (), ('), (x1a)를 이스케이프합니다. 즉, 앞에 백슬래시를 추가합니다(). SQL 주입을 방지하기 위해. 🎜🎜데이터베이스가 SQL을 실행할 때 이 백슬래시가 추가되고 데이터가 데이터베이스에 기록될 때 백슬래시가 제거되므로 데이터베이스 데이터를 읽을 때 이스케이프 해제를 위해 스트립슬래시를 호출할 필요가 없습니다. 데이터베이스에는 원본 데이터가 있으며 앞에 백슬래시가 없습니다. 🎜🎜5. strip_tags🎜strip_tags는 NUL, HTML 및 PHP 태그를 필터링합니다. 🎜🎜6. 결론🎜🎜PHP 자체 보안 기능으로는 XSS를 완전히 피할 수 없습니다. HTML Purifier🎜🎜추천 튜토리얼: "🎜PHP Tutorial🎜"🎜

위 내용은 PHP에서 일반적으로 사용되는 이스케이프 함수는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!