Úplně bezpečné to zase nebude nikdy, ale základní postup by měl být :
ověřovat údaje z formulářů a necpat je hned do databáze
u čísel zjišťovat, jsou-li čísly - is_numeric();
Při index.php?page=2 nebrat hned hodnotu $page, ale minimálně $_GET["page"];
hmtlspecialchars() - addslashes() - strip_tags() - reg. výrazy apod.
Pozor na SQL injection - údaje raději uzavírat do uvozovek.
foreach ($_GET as $secvalue) {
if ((eregi("<[^>]*script*\"?[^>]*>", $secvalue)) ||
(eregi("<[^>]*object*\"?[^>]*>", $secvalue)) ||
(eregi("<[^>]*iframe*\"?[^>]*>", $secvalue)) ||
(eregi("<[^>]*applet*\"?[^>]*>", $secvalue)) ||
(eregi("<[^>]*meta*\"?[^>]*>", $secvalue)) ||
(eregi("<[^>]*style*\"?[^>]*>", $secvalue)) ||
(eregi("<[^>]*form*\"?[^>]*>", $secvalue)) ||
(eregi("<[^>]*img*\"?[^>]*>", $secvalue)) ||
(eregi("\([^>]*\"?[^)]*\)", $secvalue)) ||
(eregi("\"", $secvalue))) {
die ("Toto nezkousej !");
}
}
foreach ($_POST as $secvalue) {
if (eregi("<[^>]*script*\"?[^>]*>", $secvalue)) {
Header("Location: index.php");
die();
}
}
A dále na webu. Stačí hledat.