PHP セキュリティ - SQL インジェクション攻撃を防ぐ簡単な方法_PHP チュートリアル

WBOY
リリース: 2016-07-13 17:10:07
オリジナル
984 人が閲覧しました

この記事では、例を使用して PHP で SQL インジェクションを防ぐ簡単な方法を紹介します。学習が必要な方は、この記事を参照してください。


方法 1: パスワードの比較

アイデア: まず、ユーザーが入力したユーザー名を使用してデータベースをクエリし、データベース内のユーザー名に対応するパスワードを取得して、データベースからクエリしたパスワードとユーザーが送信したパスワードを比較します。

コード:

分析: この場合、コードはより堅牢になり、magic_quote_gpc=Off の場合でも SQL インジェクション攻撃を防ぐことができます。攻撃者がログインに成功するには、2 つのハードルを回避する必要があるためです。1 つ目は、入力されたユーザー名が SQL ステートメント (' または 1=1%23) を作成することで直接回避できることです。この方法では 2 番目のハードルを越えることはできません。ユーザーは正しいパスワードを入力する必要があるため、これにより明らかに SQL インジェクション攻撃が拒否されます。
コードは次のとおりです コードをコピー

$sql="username='$name' のユーザーからパスワードを選択";

$res=mysql_query($sql,$conn);

if ($arr=mysql_fetch_assoc($res)){//ユーザー名が存在する場合

if ($arr['password']==$pwd) {//パスワードの比較

nearsニーズの必要性が見つかります

}その他{

「入力されたパスワードは正しくありません」をエコーし​​ます。

}

}else {

echo "このユーザー名は存在しません"

}

方法 2: PDO の PDO::prepare() 前処理操作を使用して SQL インジェクション攻撃を防止します


アイデア: PDO オブジェクトを作成し、PDO の前処理操作を使用して SQL インジェクション攻撃を防止します

コード:

コードは次のとおりです

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/629678.html技術記事この記事では、例を使用して PHP で SQL インジェクションを防ぐ簡単な方法を紹介します。学習が必要な方は、この記事を参照してください。 方法 1: パスワードの比較のアイデア: まず...
コードをコピー

$name=$_GET['ユーザー名'];

$pwd=$_GET['パスワード'];

$sql="ユーザー名=? およびパスワード=? のユーザーから * を選択";

//1. PDO オブジェクトを作成します

$pdo=new PDO("mysql:host=localhost;port=3306;dbname=injection","root","");

//2. エンコードを設定します

$pdo->exec("set names 'utf8'");

//3. $sql ステートメントの前処理

$pdoStatement=$pdo->prepare($sql);

//4. 受け取ったユーザー名とパスワードを入力します

$pdoStatement->execute(array($name,$pwd));

//5. 結果を取得します。

$res=$pdoStatement->fetch();

if(empty($res)){

echo "入力されたユーザー名またはパスワードが正しくありません";

}その他{

with with echo 「ログイン成功」;

}

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート