A função
mysql_real_escape_string() vai te proteger contra sql injection. Mas contra XSS não vai, é aí que mora o perigo.
Vou te dar um exemplo...
Se você cadastrar no banco de dados a empresa utilizando mysql_real_escape_string($_POST['empresa']), vai escapar as aspas e NULLs que o usuário colocar. Isso vai evitar o sql injection.
Mas, isso não vai evitar que o usuário cadastre tags html e javascript. Então, eu como usuário posso cadastrar no campo empresa da sua tabela isso aqui por exemplo:
<script>alert('vulnerável');</script>
Na hora que você estiver no seu painel de controle e abrir o meu cadastro, é capaz que esse script seja rodado. Por quê eu disse que é capaz? Porque vai depender de como você está exibindo o valor do campo empresa. A falha parece bobinha, mas eu posso até roubar a sua sessão utilizando javascript, assim eu poderia acessar seu painel de controle sem ter digitado senha nenhuma.
O que deve ser feito é não deixar que os caracteres especiais sejam exibidos. Ou você converte os caracteres especiais com
htmlspecialchars() na hora do cadastro ou na hora de recuperar os dados do banco de dados.
Só que é bom lembrar que cada campo é um caso. Num campo empresa por exemplo, os únicos caracteres que me interessam são as letras. Logo no cadastro eu colocaria uma expressão regular que verificaria os caracteres, se o usuário colocasse outros caracteres que não fossem letras, ele receberia uma mensagem de erro dizendo que ele colocou caracteres inválidos.
Quando você pretende permitir o cadastro de qualquer tipo de caractere num campo, até que não tem problema não converter os caracteres especiais na hora do cadastro. Você pode deixar para converter na hora de recuperar os dados para exibir. Mas por que não converter na hora do cadastro? Como eu disse, cada campo é um caso, às vezes a gente define um tamanho exato para um campo (ex.: VARCHAR 20), se convertesse os caracteres especiais já no cadastro, duas aspas por exemplo ocupariam o espaço de 12 caracteres (duas aspas convertidas com htmlspecialchars() vira
"").
Nossa, como eu escrevi...