3

私は多くの HTML/CSS を作成したテクニカル ライターですが、PHP で Web アプリケーションを書き直すために圧力鍋に放り込まれ、かなりうまくいきましたが、セキュリティについて少し心配しています。

具体的には、ユーザーがログインするメイン ページは INDEX.PHP です。ユーザーがログインすると、ページの一部が書き換えられ、ログインしていないユーザーが使用できないメニュー オプションが表示されます。ユーザーの約 50% がセキュリティが不要な公開ドキュメントを表示するため、ログインする必要はありません。残りの 50% のユーザーは、特定のドキュメント/ページへの閲覧アクセスが制限され、データベースへの書き込みが可能になります。

私はこれをすべて正常に機能させましたが、私が行っている2つのことと、それらが適切かどうかについて心配しています:

  1. ログインしたユーザーは、PAGE1.PHP などの別のページにリダイレクトされる場合があります。PAGE1.PHP の URL を保存して、セキュリティをバイパスして直接そこにアクセスできるようにしたくないので、PAGE1.PHP では、INDEX.PHP で作成したログイン Cookie をチェックします。Cookie が存在する場合はページにアクセスできますが、存在しない場合はアクセスできません。これは、この種のことを行う正しい方法ですか?

  2. 悪意のあるユーザーがさまざまなフォームの多くのテキスト ボックスの 1 つにリダイレクトを挿入するのを防ぐにはどうすればよいですか? strong、font、background などの HTML を許可する必要があります。"meta http" や "anchors 」または「java スクリプト」ですが、これが最善の解決策かどうかはわかりません。

ご協力いただきありがとうございます!

4

3 に答える 3

4

$_SESSIONあなたの友達になります。通常の共有ホスティング環境で$_SESSIONは、現在のセッションより長くは続かない可能性があるため、それに応じて計画してください。(つまり、ログイン以外の目的でこれに依存しないでください。)

あなたはsession_start、友達と一緒に読む必要があります。

さらに、このディスカッションをチェックしてください:HTML入力をサニタイズするためのPHPHTMLサニタイザー。(参考までに、とても人気があるのには理由がbbcodeあります。)markdown

于 2012-09-11T22:18:13.137 に答える
0
  1. いいえ-すべてのクライアントは自分のCookieを操作し、必要なものすべてを送信できます-無効な「ログイン」Cookieも可能です。これらの情報をサーバーサイドのセッションに保存する必要があります

  2. strip_tags一部の特殊タグのみを許可するか、HTMLサニタイザーを使用するために使用できます

于 2012-09-11T22:19:45.287 に答える
0

1. ログインに成功$_SESSIONしたら、ユーザー ID などの新しい変数を保存します (頻繁に必要になるため)。

例:

    if(login is successful)
    { 
       $_SESSION['userId'] = $userId;
    }

セッション変数が設定されていることを確認する php 認証ページを作成します。そうでない場合は、アクセス拒否またはログイン ページにリダイレクトします。

例:

if(! isset($_SESSION['userId']) || $_SESSION['userId'] == '')
{
    header("Location: accessDenied.php?msg=Not logged in");
}

各セキュア ページでは、require('auth.php');

2. strip_tagsテキストボックスと、最終mysqli_real_escape_string的にデータベースに送られるユーザー入力で使用できます。(または、準備済みステートメントを使用します。PHP で SQL インジェクションを防止するための最善の方法を参照してください)

于 2012-09-11T22:25:34.843 に答える