1. セキュリティの脅威
機密データの漏洩
データ損失とデータ破損
データの改ざん
サービス妨害 DoS
ソフトウェアエラー
拒否
2. Web セキュリティの適用
セキュリティ問題に対処するための戦略
セキュリティ問題の特定直面する脅威 脅威
対応するユーザーを理解する
コードのセキュリティ
Web サーバーと PHP のセキュリティ
データベース サーバーのセキュリティ
ネットワークのセキュリティ
コンピューターとオペレーティング システムのセキュリティ
災害計画
直面する脅威を特定する 脅威
へのアクセスまたは変更機密データ
データの損失または破壊
サービス拒否
悪意のあるコードの挿入
1. セキュリティと暗号化
多くのセキュリティ問題は、サードパーティが提供するデータを信頼することによって引き起こされます。たとえば、入力データは検証される前に疑わしいデータとして扱われる必要があります。
疑わしいデータがユーザーのブラウザに送信されると、クロスサイト スクリプティング (XSS) の問題が発生する可能性があります。
疑わしいデータが SQL クエリに使用されている場合、SQL インジェクションの問題が発生する可能性があります。
2. フィルタリング
3. セッションのセットアップを防止する
ログイン成功後など、ユーザーの認証スコープが変更される限り、session_regenerate_id() を使用してセッション識別子を再生成します。
session_regenerate_id(); $_SESSION['logged_in']=true;
?>
4. 入力のフィルター
使用する入力データは、使用する前に必ずフィルターする必要があります。
解決策:
空の配列を初期化して、フィルターされたデータを保存します。入力が有効であることを確認した後、入力をこれらの
配列に保存します。
5. クロスサイト スクリプティングを回避する
PHP アプリケーションに対するクロスサイト スクリプティング (XSS) 攻撃を安全に排除します。
解決策:
htmlentities() を通じてすべての HTML 出力をエスケープし、正しい文字エンコーディングが指定されていることを確認します:
6. SQL インジェクションを回避します
7. パスワードをサイト ファイルの外に配置します
第 1 章 安全なフォームの書き方
1. 安全な配列を宣言する
2. フィルターして判定する
4. 更新する
Code DEMO:
if(isset($_POST['dosubmit']) ) {
$info = array();
$info = checkuserinfo($_POST['info']);if(isset($info['password']) && !empty($info['password'] ))
{
$this->op->edit_password($info['userid'], $info['password']); }
$userid = $info['userid'];
$admin_fields = array('username', 'email', 'roleid','realname');
foreach ($info as $k=>$value) {
if (!in_array($ k, $admin_fields)){
Unset($info[$k]);
userid));
showmessage(L('operation_success'),'','','edit');
}
http: //os.51cto.com/art/201204/328938.htm