1 ) Jeżeli $_GET['id] zawsze jest liczbą to przede wszystkim zmień na
urlencode((int)$_GET['id']);
Przez taką zmianę ID zawsze będzie liczbą. Jeśli ktoś poda jako ID cokolwiek co nie jest liczbą to wartość ID będzie 0.
/?id=<script>alert(1);</script> => 0.
/?id = 1 => 1
./?id = ' => 0
/?id = alert(document.cookie) => 0.
2 ) Używaj funkcję htmlentities.
Na przykład, jeśli atakujący podaje coś takiego
/?id=<script>alert(document.cookie);</script>
To po zastosowywaniu htmlentities,
$id = htmlentities($_GET["id"], ENT_QUOTES, 'UTF-8');
echo $id; // <script>alert(document.cookie);</script>
$id będzie miał wartość => <script>alert(document.cookie);</script> co uniemożliwi XSS .