ähm ja und was hätte ein skript-kiddie davon wenn er das action-attribut ändert außer das er selbst sein eigenes javascript ausführt?
Ankündigung
Einklappen
Keine Ankündigung bisher.
Sicherheit in PHP
Einklappen
Neue Werbung 2019
Einklappen
X
-
Kommt darauf an.
Wenn die Daten gespeichert werden, hat es schon etwas davon. Wer weiß, vielleicht wird es in Log-Files gespeichert, die der Admin später aufruft. In einem solchen Falle spricht man von XSS-Angriffen zweiter Ordnung.Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”
Kommentar
-
Zitat von litterauspirna Beitrag anzeigenHäh? Was willst du mir grad damit sagen?
Übrigens auch die id kann man mit einem regex bearbetien [...][URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]
Kommentar
-
Gegen Injections (die ja nicht die einzige Gefahr darstellen) kann man sich auch durch (Objekt-)Modelle schützen, die Sprachelemente und Daten voneinander (ausreichend) trennen.
Zum Beispiel SQL und PDO->prepare (genauso mysqli_prepare, pg_prepare, u.v.m.) mit positional/named parameters.PHP-Code:$stmt = $pdo->prepare("INSERT INTO tablename (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $_POST['name']);
$stmt->bindParam(':value', $_POST['value']);
$stmt->execute();
PHP-Code:$userinput = // $_POST['text']
'<script type="text/javascript">alert("xss")</script>';
// ...
$div = $body->appendChild($dom->createElement('div', $userinput));
// if ($div===false) ...
echo $dom->savexml();
Kommentar
-
mal vielen dank an alle... ist doch ein thema das die meisten beschäftigt. aber nun kann ich doch schon einiges für die sicherheit einbauen.... Ein RTestrisiko bleibt wohl immer.
Wie schaut es mit den Sessions aus? muss man da auch was machen? ich habe irgendwo im forum hier gelsesn dass man diese auch in die db speichern soll zum USER...
Damit kein Multilogin möglich sein.
Wie ist das zu verstehen wie macht man es und was muss man sonst noch bei sessions beachten
Kommentar
-
Die eigentlichen Sessiondaten werden nicht zum Client übertragen. Aber die Session_id muss hin und her übertragen werden. Die Session-Id ist eine Art Kurzzeitpasswort und muss daher geschützt werden (und wenn möglich auf eine IP Adresse beschränkt werden). Wie die Session-Id übertragen wird, ist im Prinzip unwichtig. Sie muss nur einmal vom Server zum Client und bei allen folgenden Requests vom Client zum Server übertragen werden. PHP unterstützt die Übertragung per Cookie und per URL.
Session-Ids per URL zu übergeben hat den Nachteil, dass Benutzer die Session "weggeben" können, copy&paste der Addresszeile des Browsers und das war's. Zum Beispiel in einer Firma mit Router/NAT nutzt dann auch die Beschränkung auf eine IP nicht mehr viel. Cookies sind daher vorzuziehen. Und dem Benutzer sollte immer die Möglichkeit gegeben werden, die Session sicher zu beenden, Session-Daten verwerfen, Session-Id verwerfen, Cookie löschen.
Wenn Du eine neue Session startest (einen Nutzer einer neuen Session zuweist) solltest Du immer eine neue Session-id generieren lassen.
Sonst kann man zum Beispiel einem Benutzer einen vorgefertigten Link mit einer ausgewählten Session-Id zuschicken, PHP übernimmt diese Id, der Benutzer meldet sich an und der Angreifer - da er die Id kennt - kann die Session übernehmen. Deshalb immer neue Session/neuer Benutzer->session_regenerate_id().
Kommentar
-
Dominik
wie soll man den $_SESSION ändern``??
höchstens auslese aber erstellen und ändern geht doch nicht
Kommentar
-
dann wäre das hier falsch?
PHP-Code:$sql = "SELECT ".
"id, benutzername, name, name_homepage ".
"FROM ".
"homepage_userdaten ".
"WHERE ".
"(benutzername like '".$_REQUEST["name"]."') AND ".
"(password = '".md5 ($_REQUEST["pwd"])."')";
$result = mysql_query ($sql);
if (mysql_num_rows ($result) > 0)
{
// Benutzerdaten in ein Array auslesen.
$data = mysql_fetch_array ($result);
// Sessionvariablen erstellen und registrieren
$_SESSION["homepage_id"] = $data["id"];
$_SESSION["homepage_benutzername"] = $data["benutzername"];
$_SESSION["homepage_name"] = $data["name"];
$_SESSION["name_homepage"] = $data["name_homepage"];
header ("Location: homepage_index_user.php");
}
else
{
header ("Location: homepage-login.php?fehler=1");
}
Kommentar
-
Dominik
das ist schon okay wenn du $_REQUEST["name"] sicherst das mit man keine mysql angriffe machen kann
Kommentar
-
Zitat von Dominik Beitrag anzeigendas ist schon okay wenn du $_REQUEST["name"] sicherst das mit man keine mysql angriffe machen kann
Kommentar
-
Dominik
Kommentar
-
meine frage ob das so falsch ist ist ja auf den beitrag von David gerichtet
PHP-Code:$name = mysql_real_escape_string(strip_tags($_POST["name"]));
$email = mysql_real_escape_string(strip_tags($_POST["email"]));
$kategorie = mysql_real_escape_string(strip_tags($_GET["kategorie"]));
if(strlen($_REQUEST['name']) > 0 && strlen($_REQUEST['email']) > 0)
{
$eintragen = "INSERT INTO newsletter
(name, email , kategorie)
VALUES
('$name', '$email', '$kategorie')";
$eintragen = mysql_query($eintragen) or die(mysql_error());
und wie schaut es m it $_FILES aus muss man da auch noch was machen?
Kommentar
Kommentar