Como evitar ataques de injeção de código no PHP?

Estou um pouco confuso, existem tantas funções no PHP, e algumas usando isso, algumas usando isso. Algumas pessoas usam:htmlspecialchars(), htmlentities(), strip_tags() etc

Qual é o correto e o que vocês costumam usar?

Isso está correto (me aconselhe um melhor, se houver):

$var = mysql_real_escape_string(htmlentities($_POST['username']));

Esta linha pode impedir a injeção do MySQL e o ataque XSS ??

Btw, há outras coisas que eu preciso prestar atenção além do ataque XSS e injeção de MySQL?

EDITAR

Concluir:

Se eu quiser inserir uma string no banco de dados, não preciso usarhtmlentities, basta usar omysql_real_escape_string. Ao exibir os dados, usehtmlentities(), é isso que todos vocês querem dizer?

Resumir:

mysql_real_escape_string usado quando inserir no banco de dadoshtmlentities() usado ao enviar dados para a página da webhtmlspecialchars() usado quando?strip_tags() usado quando?addslashes() usado quando?

Alguém pode preencher o ponto de interrogação?

questionAnswers(8)

yourAnswerToTheQuestion