Muito bom o POST parabéns!
Discordo quando você fala sobre o PHP INJECTION. Desculpe, isso não é minha opinião é minha afirmação:
O desenvolvimento em PHP veio bem acirrado ao lado do ASP em 2000 onde foram lançados os maiores portais. Como Baixaki e UOL desde 1996 e cara, EasyPHP é seguro SIM. Sou programador a 4 anos, possuo vários cursos. Já desenvolvi vários sites, e sou formado em Analise de Sistemas Web, normalmente PHP.
Outra coisa o PHP INJECTION, cara é ridiculo o que você escreveu. Muuuuuito ridiculo, desculpe mas é a verdade! Primeiro, os códigos de Hyper Text Processor (ou simples PHP) desde 2009 já estão praticamente com está falha de segurança (na qual você trata de Bug). Por que? Simplesmente por que o PHP mudou de versão e com isso, os servidores também tiveram que mudar de versão. E na nova versão isso foi corrigido, ou seja, é 98% de chances de não haver mais sites assim. A não ser claro que o servidor seja de uma versão antiga ou ainda permita as devidas strings!
Outra coisa é que, cara qualquer pessoa faz isso. E uma explicação mais exata sobre o que é PHP INJECTION é, injeção direta, basicamente isso: Você possui um site, que tem uma página, essa página está usando o METHOD "$_GET" para recuperar o valor da URL. Digamos que você montou um site de downloads, e nele você tem um banco de dados, lá no banco de dados você tem um programa de ID número 183 e outros campos seguidos desse ID. Para pegar informações desse programa, você vai chamar a seguinte página: minhapagina.php?uid=183
E é só isso, apartir disso, você ta em conexão com apenas o ID de número 183 e pode pegar qualquer informação apenas desse ID (programa).
O que ocorre com o PHP Injection é que no código que faz a recuperação do ?uid=$ á uma falha no próprio PHP. O código opera exatamente assim:
[color="#000000"]
<?php
include("config.php"); //arquivo de configuração do servidor (php/mysql)
$uid= $_GET["uid"]; //AQUI a nossa queridinha que faz a recuperação do UID
$conexao = mysql_query("SELECT * FROM banco_sql_download WHERE id= [size="3"][b][color="#ff0000"]' ".$uid." '[/color][/b][/size]") or die(erro(mysql_error())); //AQUI a linha de conexão com o banco de dados
$n= mysql_fetch_array($[/color][color="#000000"]conexao [/color][color="#000000"]);
?>[/color]
CASO TIVER COMO O CODIGO ACIMA
E no SQL Injection se passa assim, se na URL você digitar o seguinte: minhapagina.php?uid='1 and ' o código acima irá interpretar como se você tivesse fazendo isso:
[color="#000000"]banco_sql_download WHERE id= ' [size="2"][b]'1 and 0'[/b][/size] ' ")[/color]
Ou seja. Saiu tudo perfeito, maaaas.. se Não for dessa manera, o código irá interpretar assim:
[color="#000000"]banco_sql_download WHERE id= [size="2"][b]'1 and 0'[/b][/size] ")[/color]
Aí eu só lamento... Por que o cara conseguiu acessar e pode fazer o que desejar!
Ou seja para se previnir disso basta se adaptar ao novo PHP 5.3 e estará tudo certo
Abraço. E não tiro a sua razão pois ai o PHP está tratando arquivos direto de um servidor local, e tratando com arquivos. Mas veja, que se se você tratar $_GET com arquivos sempre será uma furada. Tem que tratar com $_POST, ai sem chance de dar errado.
Fui.