0

プログラミング言語はそれほど多くありません...データをロードするだけでなく、グループをユーザーに帰属させる、ユーザーアクセスをブロックするなどの管理者固有のアクションを含む、Webサイトで多くのアクションを実行するために、多くのjQueryAjax呼び出しを含むWebサイトを構築しています。等...

私はjsを介してユーザー検証を行いません。私のajaxリクエストはPHPによって処理されるため、これらすべての管理アクションについて、最初にユーザーが実際に管理者であることを確認します(これについてはセッション/データベース情報を確認します)。これが正しい道だと思いますが、私を悩ませてきたことが1つあります...

これを考慮して、私のadmin.phpはこれらすべてのAjax呼び出しで外部.jsファイルを参照します。一般的なユーザーは管理ページにアクセスできませんが、私のjsフォルダーに移動して、私のadmin.phpAJAXスクリプトを見ることができます。 、これらのスクリプトにはもちろん、URL、タイプ(POST / GET)などの機密情報がパラメーターに含まれています。私は(もちろん、セキュリティは大したことですが)私のアプリケーションを保護するためのPHPコードを信頼していますが、それでもちょっと...私のギアを磨きます...人々は私のURLと私が行う呼び出しの種類を知っています。

たぶん私はただの妄想です、私のコードが安全であるならば、なぜ人々がこの情報を見ても気にする必要があるのですか?(Web開発でSAFEとして何かを宣言することは「生意気な」の定義であるはずですが)、いずれにせよ、これは私が考えたものです:

  • 管理ページで外部ファイルを使用していませんが、整理されていません...HTMLをJS/ PHP/etcから分離するのが好きです
  • ある種の.htaccess-fu?私のjsフォルダーへのアクセスを拒否すると、最終的に機能が損なわれるので、誰かがもっと良いアイデアを持っているのではないでしょうか。
  • 私のjsファイルを(http://jscompress.com/または同様のもので)圧縮することは実際には解決策ではありませんが、それは物事を読みにくくします

これに関するどんな入力も素晴らしいでしょう。

4

5 に答える 5

2

jsフォルダーへのアクセスを拒否すると機能が損なわれるのはなぜですか?ファイルにアクセスできるようにしておくことはできますが、内容をリストできないようにしてください。これにより、人々はすでにファイル名を「推測」する必要があります。

それ以外は、正直言って、あなたがかけた電話を差し引くことができることに問題はないと思います。

呼び出しがphpバックエンドで保護されている限り、これで問題が発生することはありません。

さらに、ミニファイは目に見えるコードを抽象化するための優れた方法ですが、呼び出しは常にfirebugまたはFiddlerで簡単に盗聴されます。

于 2013-02-06T14:02:14.917 に答える
1

まず第一に、ユーザーは正確な名前を知らずにjsファイルを閲覧できないようにする必要があります。httpdの「インデックス」オプションを無効にしましたか?

Options -Indexes
于 2013-02-06T14:00:08.243 に答える
0

認証されていないユーザーに対してJSファイルを非表示にする場合は、.JSファイルの名前を「2a2b1a82.js」などのランダムな名前に変更できます。次に、ユーザーセッションをチェックするだけの非常にばかげたPHPファイルを作成し、アクセスが許可されている場合は、「2a2b1a82.js」で読み取りファイルを実行します。

<?
session_start();
if ($_SESSION['login'] == true) {
  header('content-type: text/javascript');
  readfile('2a2b1a82.js');
}
?>

しかし、それ以外に、セキュリティは一部のjavascriptファイルへのアクセスに依存するべきではありません。あなたが述べたように、javascriptファイルによって呼び出されるPHPファイルのユーザーセッションをチェックするだけで十分です。

于 2013-02-06T14:03:51.420 に答える
0

この辺りには他の方法があります。あなたがWordpressに精通しているかどうかはわかりません。ajaxリクエストを処理するために書かれた別のphpファイルがあります。そのファイルに、paramsを渡す必要があります。送信する追加のパラメータが1つあり、それはと呼ばれnounceます。セッションごとにnounceが生成されます。nounceが有効な場合は、action/ajax-urlのように行われたリクエストを確認できます。

あなたがする必要があるのは、この特別なphpファイルを呼び出し、ユーザーごとにunqiue nounceを作成し、paramsを渡すことです。nounceを確認し、アクションを続行します。

不要なユーザーがこの特別なファイルを見ることができたとしても、nounceがどのように作成されるかを推測することはできません。

于 2013-02-06T14:12:55.360 に答える
0

まず第一に、「難読化による保護」を考えることは、安全を装うだけなので、決して良い考えではありません。

明確にするために、私はあなたがディレクトリリストを回すことによってあなたのjsファイルを隠すべきではないことをあなたに伝えたくありません。ただし、コードが本当に節約されているかどうかを確認するために、多くのことを難読化するのではなく、より多くのエネルギーを投入する必要があります。

難読化すると(実行する量と方法によって異なります)、コードの保守が難しくなり、エラーが発生しやすくなります。

重要なことの1つは、ドメインが指すルートパスにphpファイルまたは構成ファイル(パスワードが保存されている場所)を配置しないことです。(URL経由で到達できないようにする必要があります)。ブートストラップphpファイルを含むエントリファイルは1つだけにする必要があります。たとえば、ファイルでRewriteRulesを使用し.htaccessて、1つのエントリポイントにリダイレクトします。

このように構成されたもの:

project/scripts/
project/scripts/bootstrap.php
project/config/
project/logs/
project/public/  <---- //that is where http[s]://doamin.tld/ points to
project/public/index.php

project/public/index.php含まれ、project/scripts/bootstrap.phpそこでコードロジックが実行されます。

これにより、何らかの理由でサーバーの構成ファイルが台無しになり.php、スクリプトを実行する代わりにファイルのコンテンツを送信した場合でも、訪問者は自分の手の届かないファイルへのインクルードのみを見ることができます。(または別の例は、?-sURLで到達可能な各phpファイルのソースを表示できるcgiモジュールのphpバグです)

もう1つ考えられるのは、php-fpmを使用して、phpを別のユーザーとして実行してからWebサーバーとして実行し、phpファイルをphpでのみ読み取り可能にすることです。

あなたが考えるべき他の重要なことは、あなたがajax呼び出しが本当に安全であるかどうかです。たとえば、データの削除、変更、作成などのアクションの場合、セッションCookieの単純なチェックは、現在ログインしているユーザーが悪意のあるサイトに誘導されることに基づく攻撃に対しては役立ちません。

于 2013-02-06T14:42:07.603 に答える