2016-09-03 6 views
-2

私は最近しばらくは探していましたが、本当に安全な登録フォームを見つけることはできません。私が見つけたものには"open for XSS"、または"Open for SQL injections"のようなコメントがあります。私は攻撃が何を意味し、どのように行われたのか(少なくとも主にどのように行われているか)を知っていますが、安全なguidや既に存在するフォームを見つけることは、私が思ったより困難です。私が見つけた最高のものはPDOでしたが、結構偉大でしたが、最終的には大きなプロジェクトには使用すべきではないと書きました(申し訳ありません)。安全で簡単ですが、PHP登録フォームを維持する方法を学ぶときは、どこから始めますか?

私が昨日検索を始める前に、私はこのフォームで私が望むもののリストを書いた。最小限のパスワードの長さ、パスワードの確認などが可能です。私が構築して学ぶことができる分かりやすい形式を見つけることができることを希望しました。

誰かが使いやすい基本的な安全なPHPまたはPDOスクリプトを投稿して、私に何をすべきか、してはいけないかについての情報を教えてもらえますか?

+0

この質問は、「ここで何を尋ねるか」の定義によれば、明らかにオフトピックです。それは勧告を求める。 – arkascha

+0

私は[完全なWebアプリケーションを構築する]チュートリアルを持っています(http://ilovephp.jondh.me.uk/)。登録フォームの作成は扱いませんが、PHP/PDOアプリケーションのコンテキストでXSSとSQLインジェクションとの対抗方法を示しています。その上に登録フォームを作成するのは簡単でしょう。 – halfer

答えて

0

CodeIgniterまたはLaravelなどのフレームワークを使用して、XSSとSQLインジェクションから身を守ることをお勧めします。 フレームワークは、役に立つライブラリ、ヘルパー、データベースコネクタを手助けします。
最終的には、SQLクエリを作成するときにサイトの各エントリを検証し、パラメータをバインドするだけです。

if(!filter_var($email, FILTER_VALIDATE_EMAIL) === false) { 
    echo("$email is a valid email address"); 
} else { 
    echo("$email is not a valid email address"); 
} 

または単に正規表現を使用します:

if(filter_var($string,FILTER_VALIDATE_REGEXP,array("options"=>array("regexp"=>"/((\w)@(\w)\.(\[a-z]{2-4}/")))){ 
    echo 'Valid Email'; 
} else { 
    echo 'invalid email'; 
} 

をしてからデータベースのため、単にあなたの文を準備し、あなたのパラメータをバインドし、あなたがにfilter_varからの電子メールフィルタを使用することができ、電子メールを検証する

$stm = mysqli_prepare('SELECT password FROM user WHERE email = ?') 
$stm->bind_param('s', $email); // s for String 
$stm->execute(); 

ここでは、いくつかのサイトをお読みになることをお勧めします。
Official PHP doc on Mysqli
W3School on Mysqli
Official PHP doc on filter_var
W3School on filter_var
regex101 to learn regexp

P.S.私が書いた電子メールの正規表現は最高のものではありません。

+0

これは、それが続くと非常に疑問のあるセキュリティの感覚を提供します。 – arkascha

+0

SQLインジェクションに対抗するために「フレームワークを使用する」というアドバイスがありますが、XSSには注意が必要です。フレームワークの魔法に頼るのではなく、それらを取り除くために_how_を理解する方がいいです。 – halfer

+0

私はフレームワークが魔法ではないことは知っていますが、少なくとも使いやすいライブラリを少しは手伝っています。しかし、私はそれがあなたのために作品をしないことに同意します。 – Nicolas

関連する問題