Tagphp

Hide Apache server signature

In default Apache write server signatures to HTTP-responses. In production server this is not recommended action, because it gives more attacking area to criminals. Web servers would like to advice themselves and that is the reason why they add their signatures in default to HTTP-responses.

In this post I will show you how to hide unnecessary Apache server signature.

Tested on Ubuntu 14.04 and Ubuntu 12.04.

At beginning

you can watch how your server HTTP-response looks like now. Do HTTP-request e.g. with curl:

$ curl -I http://yourdomain.com

There is your HTTP-header and now you see exactly what all informations Apache gives to client. We still want to limit information of our server from outside.

Hide Apache signatures

At first open Apache configuration file apache2.conf

$ sudoedit /etc/apache2/apache2.conf

Add two lines on below to apache2.conf

ServerTokens Prod
ServerSignature Off

Save file and reload Apache daemon

$ sudo service apache2 reload

Hide also information of PHP

If you are using PHP HTTP-header also contain some information of PHP. Here is the way how to hide it.

Open php.ini

$ sudoedit /etc/php5/apache2/php.ini

In default expose_php is set to On, but now you take it Off

; Decides whether PHP may expose the fact that it is installed on the server
; (e.g. by adding its signature to the Web server header).  It is no security
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.
; http://php.net/expose-php
expose_php = Off

After changes you have to reload Apache

$ sudo service apache2 reload

Now you’re a little further safe.

Oman vieraskirjan tekeminen php:lla

Seuraavaksi näytän kuinka tehdä oman vieraskirjan käyttäen hyväksi php:ta ja mysql. Teemme 6 eri php sivua, joissa luemme mysql tietokantaa, sekä haiemme talletamme sinne myös tietoa.

Tähän tarvitaan 6 eri php tiedostoa.

Ensimmäiseksi luodaan settings niminen kansio, johon tulee settings.php niminen tiedosto. Eli tarkoituksena on kerätä kaikki sivujen asetukset tähän kyseiseen kansioon.
Tällä palikalla otetaan yhteyttä tietokantaan, jotta voimme myöhäisemmässä vaiheessa antaa sql kyselyitä sinne. (Korjaa tummenetut alueet omilla tiedoilla)

settings.php

<?php
$dbuser="tunnus";
$dbpass="salasana";
$dbname="tietokanta";
//$dbserver="localhost"
if (!($connect = mysql_connect("localhost", $dbuser, $dbpass)))
{
print "Tietokantaan ei saatu yhteyt";
exit;
}
if (!mysql_select_db($dbname))
{
print "Tietokannan valita ei onnistunut!";
exit;
}
?>

Toiseksi teemme etusivu.php, joka näyttää seuraavalta:

etusivu.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fi">
<head>
 
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
 
<link rel="stylesheet" type="text/css" href="/style/style.css" />
 
<title>Nikon Vieraskirja</title>
 
<meta http-equiv="content-language" content="fi" />
<meta name="robots" content="index, follow" />
 
<!-- Niko Kiuru, TN1PE -->
 
</head>
<body>
 
<p>Vieraskirja:</p>
<?php echo '<a href="editnames.php">Editoi</a>'; ?>
<table>
<form action="lisaavieras.php" method="post">
<tr>
<td>Nimi:</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>Sukunimi:</td>
<td><input type="text" name="lastname"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="send" value="Lähetä"></td>
</tr>
</form>
</table>
 
<?php include("settings/settings.php"); ?>
<?php
$vlista = mysql_query("SELECT * FROM vieraskirja") or die('Tapahtui Virhe' . mysql_error());
 
echo "<table border='1'>
<tr>
<th>ID</th>
<th>Etunimi</th>
<th>Sukunimi</th>
</tr>";
 
while($row = mysql_fetch_array($vlista))
{
echo "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['lastname'] . "</td>";
echo "</tr>";
}
echo "</table>";
 
?>
 
<?php mysql_close($connect); ?>
 
<p>
<a href="http://validator.w3.org/check?uri=referer"> <img src="http://www.w3.org/Icons/valid-xhtml11" alt="Valid XHTML 1.1" height="31" width="88" /></a>
</p>
 
</body>
</html>

Kolmantena teemme lisaavieras.php tiedoston:

lisaavieras.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fi">
<head>
 
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
 
<link rel="stylesheet" type="text/css" href="/style/style.css" />
 
<title>Nikon Vieraskirja</title>
 
<meta http-equiv="content-language" content="fi" />
<meta name="robots" content="index, follow" />
 
<!-- Niko Kiuru, TN1PE -->
 
</head>
<body>
<?php include("settings/settings.php"); ?>
 
<?php
$name = $_POST["name"];
$lastname = $_POST["lastname"];
 
if($name ==""){
echo "Kirjoita Etunimesi!";
}
if($lastname ==""){
echo "Kirjoita Sukunimesi!";
}
else {
$sql = "INSERT INTO vieraskirja (name, lastname) VALUES ('$name','$lastname')";
 
if (!mysql_query($sql,$connect))
{
die('Tapahtui Virhe: ' . mysql_error());
}
echo "Nimi" . " " . $name . " " . $lastname . " " . "on lisatty listaan! <br /><br />";
echo '<a href="etusivu.php">Takaisin Etusivulle</a>';
}
 
?>
 
<?php mysql_close($connect); ?>
 
<p>
<!--   <a href="http://validator.w3.org/check?uri=referer"> <img src="http://www.w3.org/Icons/valid-xhtml11" alt="Valid XHTML 1.1" height="31" width="88" /></a>-->
</p>
 
</body>
</html>

Ja jotta hallinointi sujuisi paremmin, eikä tarvitse räpellellä suoraan tietokannasta, niin tehdään pienimuotoinen hallinointi sivu:

editnames.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fi">
<head>
 
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
 
<link rel="stylesheet" type="text/css" href="/style/style.css" />
 
<title>Nikon Vieraskirja</title>
 
<meta http-equiv="content-language" content="fi" />
<meta name="robots" content="index, follow" />
 
<!-- Niko Kiuru, TN1PE -->
 
</head>
<body>
 
<p>Vieraskirja:</p>
<?php echo '<a href="etusivu.php">Etusivulle</a>'; ?>
<table>
<form action="editnames2.php" method="post">
<tr>
<td>Anna poistettavan ID numero:</td>
<td><input type="text" name="id"></td>
</tr>
<td></td>
<td><input type="submit" name="send" value="Poista"</td>
</tr>
</form>
</table>
 
<?php include("settings/settings.php"); ?>
<?php
$vlista = mysql_query("SELECT * FROM vieraskirja") or die('Tapahtui Virhe' . mysql_error());
 
echo "<table border='1'>
<tr>
<th>ID</th>
<th>Etunimi</th>
<th>Sukunimi</th>
</tr>";
 
while($row = mysql_fetch_array($vlista))
{
echo "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['lastname'] . "</td>";
echo "</tr>";
}
echo "</table>";
 
?>
 
<?php mysql_close($connect); ?>
 
<p>
<a href="http://validator.w3.org/check?uri=referer"> <img src="http://www.w3.org/Icons/valid-xhtml11" alt="Valid XHTML 1.1" height="31" width="88" /></a>
</p>
 
</body>
</html>

Sekä:

editnames2.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fi">
<head>

<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

<link rel="stylesheet" type="text/css" href="/style/style.css" />

<title>Nikon Vieraskirja</title>

<meta http-equiv="content-language" content="fi" />
<meta name="robots" content="index, follow" />

<!-- Niko Kiuru, TN1PE -->

</head>
<body>
<?php include("settings/settings.php");

$id = $_POST["id"];
if(is_numeric($id) == false){ die("Eipäs haxata."); }

$query = mysql_query("SELECT * FROM vieraskirja WHERE id='".$_POST["id"]."'") or die('Tapahtui virhe: ' . mysql_error());
while($row = mysql_fetch_array($query)){

echo "Poistit onnistuneesti" . " " . $row["name"] . " " . $row["lastname"];
echo '<br /><a href="editnames.php">Takaisin Editointi sivulle</a>';

mysql_query("DELETE FROM vieraskirja WHERE id='".$row["id"]."' LIMIT 1");

}

mysql_close($connect);
?>
</body>
</html>

Tällätavoin ollaan saatu aikaseksi yksinkertainen vieraskirja. Huomioithan että tässä ohjeessa ei ole salattua hallinnointi sivua, joten kukatahansa voi päästä poistelemaan nimiä! Muistathan suojata sen ennen käyttöä.

Pari ongelmaa myös on havaittavissa, eli nimeen/sukunimeen pystyy syöttämään numeroita.

© 2017 Niko Kiuru

Theme by Anders NorenUp ↑