내 PHP 웹 응용 프로그램은 들어오는 전자 메일 메시지를 구문 분석하고이를 MySQL 테이블에 저장합니다. 전자 메일 컨텐츠가 구문 분석 된 후에 나는 "To", "From", "Subject", "Body"등과 같은 다른 전자 메일 파트를 저장하기 위해 MySQL 준비 문을 사용하여 코드 삽입을 방지합니다.파일 이름에 코드를 삽입 할 수 있습니까
전자 메일에 첨부 파일이있는 경우이 파일을 폴더에 저장하고 PGP로 암호화되어 PGP EXEC 기능을 통해 gpg 외부 명령을 실행해야합니다.
"mydoc.doc의 mysqldump_to_www_root의 and_format_all_partitions"
어쩌면 내가 틀렸다 :이 파일은 처리
사람이 같은 attahcment 뭔가를 호출하는 경우 코드 주사, 즉 것으로 보인다.
//Here I save the file to a folder
$filename = $attachment->filename;
if ($fp = fopen($save_dir.$filename, 'w')) {
while($bytes = $attachment->read()) {
fwrite($fp, $bytes);
}
fclose($fp);
}
//Here I check for injection
If(!is_file($attach_dir.'/'.$filename)) {
// something wrong, do not proceed
}
내 OS는 EXT4 파일 시스템으로 우분투입니다 : 파일이 바로 그런 식으로 생성 한 후이있는 경우 내가 확인하기로 결정 방지합니다. 저 shceme는 전자 우편 첨부 파일에있는 가능한 부호 주입에서 저를 제외하고하고자 했는가? 즉
$cmd = "gpg --passphrase *** '$attachedir/$filename'";
exec($cmd, $output);
가 디스크 살균에 파일을 저장/파일 이름을 필터링 않거나 예외가있을 수 있습니다 : 결국 내가 예를 들어 때라도을 수행하려는 경우 내가 처음에 걱정해야합니까 ?
파일의 이름을 임의의 문자열로 변경하고 원래 이름과 임의의 문자열을 모두 데이터베이스에 저장하지 않는 이유는 무엇입니까? –
@ChrisForrence 원래 이름에 원치 않는 코드가 있으면 어떨까요? – user164863
그런 다음 원하지 않는 코드가 데이터베이스 테이블의 "원래 파일 이름"열에 문자열로 무해하게 저장됩니다. 당신은 SQL 삽입을 피하기 위해 준비된 문장을 사용한다고 말했고, 그것은 올바른 일입니다. – Wyzard