programing

끈을 피한다는 게 무슨 뜻이죠?

procenter 2023. 2. 2. 21:54
반응형

끈을 피한다는 게 무슨 뜻이죠?

'Does_SESS'를 읽고 있었어요ION['username']은 SQL 쿼리에 액세스하기 전에 이스케이프해야 합니다.또, 「원본을 불문하고, SQL 쿼리에 건네주는 모든 문자열을 이스케이프 할 필요가 있습니다」라고 되어 있습니다.이제 이런 게 정말 기본이라는 걸 알았어요.구글 검색 결과 2만 개 이상의 결과가 나왔습니다.Stackoverflow에만 20페이지에 달하는 결과가 있지만 실제로 문자열의 이스케이프가 무엇인지 또는 그 방법을 설명하는 사람은 없습니다.그것은 추측일 뿐이다.좀 도와 줄래요?항상 그렇듯이 PHP로 웹 앱을 만들고 있기 때문에 배우고 싶습니다.

제가 살펴본 내용은 이스케이프 문자 삽입, 자바에서 이스케이프 문자모두 무엇입니까?, addcslash(), 이스케이프 문자, mysql_real_escape_string()은 실제로 무엇을 합니까?,어떻게 하면 php 문자열에서 큰따옴표를 이스케이프할있을까요? MySQL_real_escape_string은 슬래시를 추가하지 않습니다?, php 문자열에서 이스케이프 시퀀스를 삭제해 주세요.계속할 수 있지만 요점은 알고 계실 겁니다.이것은 게으름이 아니다.

문자열을 이스케이프하는 것은 해당 문자열에서 사용되는 따옴표(및 기타 문자)의 모호성을 줄이는 것을 의미합니다.예를 들어 문자열을 정의할 때는 일반적으로 큰따옴표 또는 작은따옴표로 묶습니다.

"Hello World."

하지만 내 문자열에 큰 따옴표가 있으면 어쩌지?

"Hello "World.""

이제 나는 애매모호해졌다 - 통역사는 내 문자열이 어디에서 끝나는지 모른다.큰따옴표를 보관하려면 몇 가지 옵션이 있습니다.문자열 주위에 작은 따옴표를 사용할 수 있습니다.

'Hello "World."'

아니면 내 인용구를 피해갈 수도 있어

"Hello \"World.\""

슬래시 앞에 있는 따옴표는 이스케이프되며 문자열 값의 일부로 인식됩니다.

쿼리에 관한 한 MySQL에는 쿼리에서 사용할 수 없는 특정 키워드가 있어 혼란을 일으킵니다.열 이름이 "Select(선택)"인 값 테이블이 있다고 가정하고 다음을 선택합니다.

SELECT select FROM myTable

이제 질의에 애매모호함을 도입했습니다.쿼리 내에서 백틱을 사용하여 이 애매함을 줄일 수 있습니다.

SELECT `select` FROM myTable

이렇게 하면 필드 이름을 선택할 때 잘못된 판단으로 인해 야기된 혼란을 제거할 수 있습니다.

이 중 많은 부분은 단순히 값을 에 전달하는 것만으로 처리할 수 있습니다.아래 예에서는 쿼리에 문제가 발생하지 않도록 하기 위해 사용자가 제출한 데이터를 이 함수를 통해 전달하고 있음을 알 수 있습니다.

// Query
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
            mysql_real_escape_string($user),
            mysql_real_escape_string($password));

밖에도 현을 , 현을 탈출하기 위한 방법이 .add_slashes,addcslashes,quotemeta안전한큰은 '보다 낫다', ' 낫다 '하다', '하다', '하다', '하다', '하다', '하다'를 선호합니다.mysql_real_escape_string ★★★★★★★★★★★★★★★★★」pg_escape_string((Postgre)의SQL.

일부 문자는 사용 중인 SQL 데이터베이스에 특별한 의미를 가집니다.이러한 문자가 쿼리에서 사용될 경우 공격자가 데이터베이스를 손상시킬 수 있는 등 예기치 않은 또는 의도하지 않은 동작을 일으킬 수 있습니다.이러한 문자가 쿼리에 영향을 미치지 않도록 하려면 이스케이프하거나 달리 말하면 이 쿼리에서 특수문자로 취급하지 않도록 데이터베이스에 지시해야 합니다.

mysql_real_escape_string()\x00,\n,\r ,\,'," ★★★★★★★★★★★★★★★★★」\x1a이는 이스케이프하지 않으면 MySQL 데이터베이스에서의 SQL 주입 등 앞에서 설명한 문제를 일으킬 수 있기 때문입니다.

간단하게 하기 위해 기본적으로 백슬래시 "\"는 실행 시 인터프리터에 대한 명령어라고 생각할 수 있습니다.

예를 들어, 이 문장을 해석하는 동안:

$txt = "Hello world!";

단계토큰으로 때) 식별된 .$,txt,=,",Hello world!," , , , , 입니다.;

그러나 문자열 내의 백슬래시에 의해 토큰 세트가 추가되어 바로 뒤에 오는 문자에 대한 명령어로 해석됩니다.예를 들어, 예를 들어 다음과 같습니다.

$txt = "this \" is escaped";

.$,txt,=,",this,\,",is escaped," , , , , 입니다.;

는, 「알다」의 를 이미할 수 ).\ 입니다 of of of의 . 따라서"명령어가 됩니다.

언급URL : https://stackoverflow.com/questions/10646142/what-does-it-mean-to-escape-a-string

반응형