특정 테이블이 업데이트 될 때마다 기록되는 mysql 트리거가 있습니다.MySQL 트리거 : 어떤 스크립트를 호출했는지 아는 방법?
PHP 스크립트가 트리거 한 로그를 기록하는 방법이 있습니까? (당연히 각 PHP 스크립트를 수정하지 않고도 내 목적을 무효로 할 것입니다.)
또한, 트리거 한 UPDATE 바로 전에 SQL 문을 로깅하는 방법이 있습니까?
감사
나단
특정 테이블이 업데이트 될 때마다 기록되는 mysql 트리거가 있습니다.MySQL 트리거 : 어떤 스크립트를 호출했는지 아는 방법?
PHP 스크립트가 트리거 한 로그를 기록하는 방법이 있습니까? (당연히 각 PHP 스크립트를 수정하지 않고도 내 목적을 무효로 할 것입니다.)
또한, 트리거 한 UPDATE 바로 전에 SQL 문을 로깅하는 방법이 있습니까?
감사
나단
아니요,하지만 좀 더 구체적인 방향을 얻을 수 있습니다.
먼저 연결을 사용하는 경우 연결을 해제하십시오. 이렇게하면 로그를 더 쉽게 사용할 수 있습니다.
초, 동일한 데이터베이스에 액세스하는 코드베이스가 여러 개있는 것처럼 들리므로 정확히 동일한 권한으로 각 코드베이스마다 다른 사용자를 만들고 각 사용자가 다른 사용자로 로그인하도록하십시오. 이제 로그를 보면 어떤 애플리케이션이 무엇을하는지 볼 수 있습니다.
세 번째로 쿼리 로그가 있으면 트리거를 트리거 한 UPDATE가 트리거를 일으킨 UPDATE가됩니다.
네 번째로, 앱이 mysql 연결에 대해 캡슐화를 사용하는 경우 쿼리를 데이터베이스에 파일로 전송할 때 호출 스택을 작성하도록 수정해야합니다.
짧은 답변 : 전혀없고. 죄송합니다.
달성하려는 목표는 무엇입니까? 아마도 또 다른 방법이있을 것입니다 ....
지속적인 SQL 주입 공격을 조사하려고합니다. 다양한 프로그래밍 언어를 사용하여 많은 파일에 많은 코드가 있습니다. 나는 어디서 볼지에 대한 힌트를 얻고 싶었습니다. –
나는 이것이 웹 어플리케이션이라고 가정합니다. 웹 액세스 로그를 검사하려고하면 문제를 추적 할 수있는 모든 정보가 있어야합니다. 나에게도 개인 이메일을 보낼 수 있습니다 - [email protected] 하루 종일 (흰색 모자) 몇 군데 사이트를 해킹 했으므로 그 방법으로 문제를 찾을 수 있습니다. –
몇 가지 답변과 의견을 읽었습니다. 쿼리가 단일 지점을 통과하는 경우에만 유용한 아이디어가있었습니다. 예를 들어, 모든 쿼리가 실행되는 데이터베이스 클래스가있는 경우.
이 경우 쿼리 자체에 설명을 추가 할 수 있습니다. 주석에는 함수 호출 추적이 포함되며 SQL 주석으로 조회에 추가됩니다.
다음으로 쿼리 로깅을 설정하면 로그 파일에서 각 쿼리가 호출되는 위치를 볼 수 있습니다.
쿼리가 단일 지점을 통과하지 않으면 운이 좋지 않을 수 있습니다.
하나의 마지막 제안은 MySQL Proxy을 살펴 보는 것입니다. 나는 그것을 많이 사용하지는 않았지만 쿼리의 중간 처리를하도록 설계되었습니다. 그러나 추가 정보를 전달하려면 PHP 스크립트를 수정해야한다고 생각합니다.
불행히도 우리는 SQL을 다루기 위해 하나의 클래스를 사용하지 않습니다. 우리의 오래된 코드베이스는 기본적으로 필요할 때마다 가장 기본적인 mysql_query() 호출이다. –
로그 파일을 조사하여 어떤 종류의 쿼리가 서버에 "날아가고 있는지"확인하십시오. –