パスワード認証
http://www.symantec.com/business/support/index?page=content&id=TECH103176&locale=ja_jp#
— login.php ——
入力したPASSWORDと、定義パスワードを比較する。
<?php
define("PASSWORD", "pass"); session_start(); //セッションスタート if(isset($_POST["action"])&&$_POST["action"]==="login"){ if(PASSWORD === $_POST["password"]){//パスワード確認 $_SESSION["TEST"] = md5(PASSWORD);//暗号化してセッションに保存 header("Location:admin.php"); //admin.phpを表示 }else{ session_destroy();//セッション破棄 message(); } } ?> <?php
function message(){ print "パスワードが違います"; } ?> <form action="" method="post"> <input name="password" type="text" value="pass" /><br /> <input name="action" type="submit" value="login" /> </form>
— admin.php ——
PASSWORDが認証され、セッションに保存されている値と同じであれば「success」を表示する。
<?php define("PASSWORD", "pass");
session_start(); //セッションスタート if(isset($_SESSION["TEST"]) && $_SESSION["TEST"] != null && md5(PASSWORD) === $_SESSION["TEST"]) //セッションに保存されているパスワードと一致 { print "Login success"; }else{ session_destroy();//セッション破棄 print "Login false"; } ?>
ファイルの読み込み
$index = @file($index_file);//ファイルの全行を読み込み for($i=0;$i<count($index);$i++){//各行のカンマ区切りのデータ $info[$i]= explode(',',$index[$i]);//カンマで分割して、$infoの2重配列へ }
フォーム入力データから、htmlタグを外す
$form_data = htmlspecialchars($_POST[“input_form”]);
データベースに関して
rootのパスワード変更
$> mysqladmin -u root password "newpwd"
$>mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');
Warning: mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client
のエラーが出た場合
mysql> set password for root@localhost = OLD_PASSWORD('newpwd');
データベースの作成
mysql> create database sample; mysql> exit
一般ユーザの追加
データベースを操作するユーザ
ユーザ名:hoge パスワード:passwd
mysql> grant select,insert,delete,update,create,drop,file, alter,index on *.* to hoge@localhost identified by '123456'; mysql> flush privileges; mysql> exit
これでもOK
GRANT ALL ON *.* TO hoge@localhost IDENTIFIED BY '123456';
データベースへの接続
データベース sample 操作するユーザ名:test パスワード:passwd
//DB接続 $dbHandle = mysql_connect("127.0.0.1","test","passwd"); if ($dbHandle == False) { print ("can not connect dbn"); exit; } else { mysql_select_db("test",$dbHandle); }
データベースのテーブルへデータの追加
sampleデータベースのsample_tableテーブルへID番目のデータを追加 //データ追加 $tuika = "insert into sample_table values(ID, '項目1', '項目2', '項目3')"; mysql_query($tuika);
LDAP認証
foo@hoge.com の DN を取得します。samaccountname は fooになる。
$ldaphost = 'hoge.com'; $ldapport = 389; $user_dn = '...'; $username = 'username'; $password = 'password'; $samaccountname = 'foo'; $conn = ldap_connect( $ldaphost, $ldapport); ldap_set_option( $conn, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option( $conn, LDAP_OPT_REFERRALS, 0); $bind = ldap_bind( $conn, $username, $password ); $attrs = array( 'memberof' ); $result = ldap_search( $conn, 'DC=hoge,DC=com', "(samaccountname=$samaccountname)", $attrs ); $info = ldap_get_entries( $conn, $result ); if( !$info['count'] ) { // ユーザー情報の取得に失敗 } $user_dn = $info[0]['dn'];
グループオブジェクトの取得
ユーザー DN をメンバーに持つグループが存在するかどうかチェック
$base_dn = "CN=group1,OU=ou1,DC=hoge,DC=com"; $filter = "(&(objectCategory=group)(member=$user_dn))"; $result = ldap_search( $conn, $base_dn, $filter); $info = ldap_get_entries($conn, $result); if( !$info['count'] ) { // ユーザーはそのグループに所属していない } else { // ユーザーはそのグループに所属している }