php
1에서 일반적으로 사용되는 이스케이프 함수.addslashes
addslashes
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의 이스케이프 기능에 대해 걱정할 필요가 없습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!