2010-04-05 4 views
0

방금 ​​누군가가 '의 성을 가지고 스크립트가 아무 것도 업데이트하지 않았기 때문에 발견했습니다. 어떤 성적인 피해자의 성을 안전하게 지키는 가장 좋은 방법은 무엇입니까?MySQL에 저장하기 전에 확인 및 스트리핑

+3

http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php를 참조하십시오. SoosGjr이 언급 한 것처럼 SQL을 위생적으로 처리 할 수는 있지만, 링크에서 논의 된 이유 때문에 매개 변수화가 더 나은 방법으로 간주됩니다. –

+0

당신은 질문을 추가하는 대신에 질문에 답해야합니다, 나는 당신에게 투표를하고 아마도 최선의 대답으로 선택할 수 있습니다 :) – Strawberry

+0

나는 중복 대답을 쓰고 싶지 않다; 연결된 답변에 아무 것도 추가 할 수 없습니다. –

답변

2

로직을 DB에 레코드를 삽입하기 위해 SQL을 포함하는 경우 준비된 문을 사용해야합니다. 제대로 당신을 위해 데이터 값을 탈출한다 무엇보다도 (만큼 당신이 일관되게 사용한다.)

+0

당신은 어떤 종류의 준비된 진술을하고 있습니까? – Strawberry

+0

준비된 성명서는 M. Petrotta가 위의 주석에서 언급 한 내용입니다. 다음은 PHP 용 PDO 추상화 레이어를 사용하는 경우 해당 설명서에 대한 링크입니다. http://php.net/manual/en/pdo.prepared-statements.php 데이터 값을 이스케이프하는 것 외에도 prepared statements가 더 효율적으로 사용될 수 있습니다 반복적으로 동일한 쿼리를 실행하는 경우 SQL에 코드를 직접 삽입하려면 일반적으로 코드를 사용하는 것이 좋습니다. –

+0

@Doug SQL 삽입을 허용하지 않는 항목 (또는 '삽입시'중단) –

0

PHP는 mysql_real_escape_string이라는 함수를 가지고 있기 때문에 모든 잘못된 문자들을 위생해야합니다.

+0

나는 downvote하고 싶었지만 아직 완전한 멤버는 아니다 :-) 함수가 도움이되지만 (mysql_escape_string, btw와 혼동하지 마라) 좋은 방어 프로그래밍을 권장하지 않는다. 이후의 데이터 조작으로 인해 발견하기가 매우 어려울 수 있습니다. –

+0

@pst - 개인적으로, 나는 다른 방법의 보편적 인 우월성에 대해 물을 것이다. 나는 그것이 적절하게 구현되는 한 코딩 스타일에서 단순한 차이점을 발견했다. 그러나 다른 개발자와 함께 플레이해야하는 다중 개발자 환경에서는 준비된 문장이 더 보편적 인 솔루션이라는 사실을 받아들입니다. – SoosGjr

0

당신은 데이터베이스에 삽입하기 전에

print htmlentities("O'Brian",ENT_QUOTES); 

를 사용해야합니다, 그것은

O'Brian 
로 문자열을 변환합니다

이므로 데이터베이스에 저장하는 것이 안전합니다. 이 함수는 또한 큰 따옴표를 이스케이프합니다.

escaping string에 대한 자세한 정보

관련 문제