ホームページで管理者専用画面を作成し、
ページから、ログインIDとパスワードとIPアドレスが一致しないと
ログインできないページをPerlにて作成しました。
しかし、そのURLを直接入力してしまえば入れてしまいます。。。
それを防ぎたいのですが、
(編集ページ)edit.pl
<SCRIPT language="JavaScript">
<!--
myurl="http://domain.jp/login.pl";
ref=document.referrer;
function refcheck(){
if(ref.indexOf(myurl)<0){
window.location.href=myurl;
}
}
//-->
</SCRIPT>
JavaScriptでこれを指定したのですが、
ログインページからも弾かれ、直リンクも弾かれてしまいます。。。
どのようにすればいいのでしょうか・・・?
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
どこまで厳密に防ぎたいかにもよりますが、ブラウザによってdocument.referrerを返さないもの、またデバッガーなどでdocument.referrerを変更できます。
ですので手組するよりは、OSS等のCMSツールを利用されたほうがよいかと思います。
No.2
- 回答日時:
ANo1です。
補足のスクリプトでやっていることは、逆のようにも見えますけれど…?
書籍やサイト等で紹介されているものを利用なさっていると思いますので、その解説を再度よくご覧になってみてください。
>のようにしていて、この状態で、実行すると
>alert(ref);が空欄で返ってきました。
ダイレクトでURLを指定した場合(ブックマークなどでも同様)はreffererは空文字を返します。
そのような場合や外部からのリンクを選別するのが目的でしょうから、『reffererが自サイト内であるか』どうかがチェックの対象になるのではないでしょうか?
全体構成を知りませんが、login.pl(=単一ページ)からかどうかをチェックするのではなく、自サイト(=ドメイン以下可能なディレクトリまで)であることをチェックしたいのではないでしょうか?
>のようにしていて、この状態で、実行すると
>alert(ref);が空欄で返ってきました
上述のようにrefreshで再読み込みをするとreferrerは空白になってしまいますので、その設定を維持する限りは、ご提示の方法ではブックマークなどからの遷移とは区別はできないと思います。
とは言っても、refreshの設定(なぜ必要なのかも不明ですが)をしているページって、login.plだけではないのですか?
(login.plのページは、直リンを弾かなくても良いページなのでは???)
No.1
- 回答日時:
こんにちは
うまくいかない理由を調査するために・・・
一時的に、
alert(ref);
とでもして、referrerが実際にどのような値になっているかを調べてみるとわかると思います。
referrerなので、そのページを表示する前の経路をいくつか変えてテストしてみたほうが良さそうですね。
ご回答ありがとうございます!
<SCRIPT language="JavaScript">
<!--
myurl="login.pl";
ref=document.referrer;
function refcheck(){
if(ref.indexOf(myurl)<0){
window.location.href="myurl="http://domain.jp/login.pl";";
}
}
//-->
</SCRIPT>
このようにして、解決はしたのですが、
少し疑問があります。
ログインのページで
<meta http-equiv="REFRESH" content="5;URL=http://domain.jp/login.pl/'">
のようにしていて、この状態で、実行すると
alert(ref);が空欄で返ってきました。
上のコードにして、このメタを取り除くことにより
直でリンクできず、ログインページからしか入れませんでした。
このメタを指定しているとダメなのですか?;;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- Visual Basic(VBA) VBAでWEBサーバー上に保存されたPDFファイルのリンク有効チェックについて 1 2022/11/11 16:04
- JavaScript JAVASCRIPT 2 2022/04/15 15:10
- PHP 掲示板のセキュリティについてアドバイスお願い致します 1 2023/08/11 20:44
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript HTMLでJavaScriptを使用してプログラムを作ります。 入力されたパスワードを取得して、パス 2 2022/10/18 01:05
- ホームページ作成・プログラミング ログインしないとみることができないWebページの作成方法 3 2023/07/29 13:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォルダを自動で開く
-
C#の質問です。
-
VB.NET2003 テキストボックスに...
-
PowerPointで時計表示
-
JSPの処理の途中で、JavaScript...
-
javascriptからサーバサイドの...
-
IEでalertのみを無効にする方法...
-
あるurlが存在する(?)かどう...
-
if(1){...}とはどういうことで...
-
禁止文字チェック
-
JavascriptでのExcel起動について
-
VBAの[cellsメソッドは失敗しま...
-
VBAによる第3、4水準文字の判定...
-
csvファイルを読み込み、該当項...
-
PHPができればJavaScriptは...
-
JavaScriptで ブラウザの閉じる...
-
IE8開発者ツールでソースの修正
-
ページを一回だけリロードさせ...
-
1つのVBAコードをすべてのコア...
-
gas 全角数字を半角数字に変換
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォルダを自動で開く
-
至急お願いします!javascript:...
-
VB.NETからWEBブラウザの操作に...
-
ページ遷移時にアコーディオン...
-
リンクを右クリックするとペー...
-
C#の質問です。
-
図書館の開館カレンダーのよう...
-
リロード(追加)
-
Javascriptのカウントダウンに...
-
onmousedownを自動で押して、イ...
-
C# ブラウザの自動クリック
-
ホームページ 専用ページ 直リ...
-
リンク先に飛ぶときに、現在の...
-
ウィンドウを閉じたら、アラー...
-
PHPを使って作成したボタンをク...
-
javascript:void(0)。return
-
複数HTMLを1つの別ウィンドウで...
-
表示ページによって、aタグ内の...
-
JAVASCRIPTでページ転送する方法
-
ツールバー、アドレスバーなど...
おすすめ情報