2016-08-11 15 views
-1

悲しいことに、悲しいことに、私の学生のウェブサイトがハッキングされたばかりです。誰かがscript tagを挿入し、データベースに保存します。データベースはウェブサイト呼び出しのpastebinで公開されています。私はちょうどウェブサイトをダウンした。誰かが私にこの速さを修正する方法を教えてもらえますか?

+0

任意のユーザの挿入データとにhtmlentitiesはそれがすべてのデータあなたの出力をエスケープ – Saurabh

+3

使用プリペアドステートメントを見てみましょう[htmlspecialchars](http://php.net/manual/en/function.htmlspecialchars.php)を使用してWebブラウザを開きます。そうすれば、Webブラウザに送信されたときに決して実行されません。 – rypskar

+1

出力する前に、データを生成したときにマジッククオートとバインド・パラメータを持つ 'mysqli_real_escape_string' –

答えて

1

strip_tags()を使用してデータベースに値を挿入して、文字列からHTMLタグまたはPHPタグを削除することができます。

これは、あなたが

$code=strip_tags($code); 

は、データベースに挿入するすべての変数とそれを使用して、文字列からHTMLおよびPHPタグを削除する方法です。

$code=strip_tags($code); 
$fn=strip_tags($fn); 
$em=strip_tags($em); 
$un=strip_tags($un); 
$hash=strip_tags($hash); 
$salt=strip_tags($salt); 
$ip=strip_tags($ip); 
$this->db1->query("INSERT INTO users SET code='" . $code . "', firstname='" . $fn . "', email='" . $em . "', username='" . $un . "', password='" . $hash . "', salt='" . $salt . "', registerdate='" . time() . "', ipregister='" . $ip . "'"); 

strip_tags()完全にSQLインジェクションを防ぐものではないが。あなたは準備されたステートメントをうまく使うべきです。

参考:http://php.net/manual/en/mysqli.quickstart.prepared-statements.php

+0

ありがとう、完成したコードを教えてくれますか?試してみるとうまくいきません! – schoolteacher

+0

各変数で 'strip_tags'を呼び出し、それをクエリ文字列で使用するだけです。更新された回答を確認してください。 –

+3

'strip_tags()'だけではSQLインジェクションを防ぐことはできません。 –

関連する問題