PHP セキュリティの概要分析

WBOY
リリース: 2016-06-23 14:30:28
オリジナル
903 人が閲覧しました

第 1 章の概要

1> 原則
多層防御
最小限の権限
シンプルであることは美しい
露出の最小化

2> 方法

リスクと可用性のバランス

追跡データ

フィルタ入力

出力エスケープ

//****フォーム送信詐欺を防ぐ

session_start();
$_SESSION['token'] = md5(uniqid(mt_rand(), true));

//*****フィルタリングされたデータ配列を保存するために 1 つを初期化します。

$clean = array();

if(ctype_alpha($_POST['name'])){

$clean['name'] = $_POST['name'];
}else{

//エラー

}
//****クロスサイトスクリプティングを避ける
/*True 文字エンコーディングを使用してください*/
header('Content-Type: text/heml; charset=UTF-8');
/*エスケープされたデータを保存するために配列を初期化*/
$html = array();
$html['username'] = htmlentities($clean['username'], ENT_QUOTES,'UTF-8');

//****SQL インジェクションを避ける

/*PDO のようなデータベースを使用して、データベースの適切なエスケープを実行します*/
$ db = new PDO('mysql:host=localhost;dbname=users',$_SERVER['DB_USER'],$_SERVER['DB_PASSWORD']);
$statement = $db->prepare("INSERT INTO user ( ユーザー名, パスワード) VALUES (:username, :password)");
$statement->bindParam(':username',$clean['username']);
$statement->bindParam(':password', $clean[ 'パスワード']);
$statement->execute();
$db = NULL;

安全な PHP フォーム処理コード

$okay = 0;
$username = $_POST['user'];
$pw = $_POST['pw'];

$sql = "
username='".mysql_real_escape_string($username ) のユーザーから ctr として count(*) を選択します。"'
およびpassword='".mysql_real_escape_string($pw)."'制限1";

$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){
if ($data- >ctr == 1){
//アプリケーションに入っても大丈夫です!
$okay = 1;
}
}

if ($okay){
$_SESSION['loginokay'] = true;
header("index.php");
}else{
header("login.php");
}
?>

//****パスワードをサイトの外部に配置しますファイル
mysql_connect('localhost' , $_SERVER['DB_USER'], $_SERVER['DB_PASSWORD']);

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