2013-06-05 4 views
-2

브라우저 게임이 있습니다. 메시지 보내기 양식이 있습니다.사람들이이 보안 구멍을 어떻게 사용할 수 있습니까?

"message_content"변수에 실제 이스케이프 문자열 기능을 만들지 않았습니다.

사용자가 메시지를 삽입 한 후 업데이트 할 수있는 옵션이 있습니까?

나는 사용자가 message_content에 sql 코드를 쓸 수 있다는 것을 의미합니까? 갱신과 마찬가지로 users은 = '9999'gold을 설정할 경우 username = 'my_username'

감사 ALOT .... 그리고 그것은 단지 질문이. 이미 만들었습니다. mysql_real_escape_string ...

+1

[PHP에서 SQL 주입을 방지하는 방법?] (http://stackoverflow.com/questions/60174/how-to-prevent-sql-injection-in-php?rq=1) –

답변

3

웹 응용 프로그램을 보호하기 위해 매개 변수가있는 쿼리를 PDO 모듈과 함께 사용하는 방법에 대해 알아보십시오. http://bobby-tables.com/php에는 시작하기위한 예제가 있습니다.

0

다음과 같은 일이 일어날 수있는 사용자 입력을 탈출하지 않는 경우 :

이 쿼리를 상상해 : $login가 사용자의 입력을하다

SELECT * FROM user WHERE login='$login' 

.

이제 사용자는 변수에 다음과 같은 내용을 insers : '; DROP TABLE user; --

다음 쿼리가 실행됩니다

SELECT * FROM user WHERE login=''; DROP TABLE user; --' 

그것은 매우 일반적인 예,하지만 난 당신이 아이디어를 얻을 희망

1

mysql_query 함수는 한 번에 여러 명령문의 실행을 허용하지 않습니다. 따라서 often mentioned example of Robert'; DROP TABLE Students; --은 작동하지 않습니다.

이는 또한 익스플로잇이 명령문 유형으로 제한된다는 것을 의미합니다. 따라서 주입 지점이 INSERT 인 경우 취약점은 특정 테이블에 임의의 값을 삽입하는 데에만 악용 될 수 있습니다.

그러나 여전히 데이터베이스의 임의 데이터를 해당 테이블에 주입 할 수 있습니다. 또한 공격자가 메시지를 직접 처리하면 데이터베이스에서 임의의 데이터를 읽을 수있게되며 서버에서 임의의 파일을 읽고 쓸 수있게됩니다.