ホームページで管理者専用画面を作成し、
ページから、ログイン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#の質問です。
-
フォルダを自動で開く
-
PHPを使って作成したボタンをク...
-
JavaScriptの負荷について
-
デザイン時のVisible=Falseは実...
-
htmlのfileタグに自動で値を入...
-
if(1){...}とはどういうことで...
-
JavaScriptで ブラウザの閉じる...
-
jQuery ui Datepicker 明日以降...
-
javascriptでのmdb接続について
-
初心者です。gulpでコンパイル...
-
onChange="javascript:関数名"...
-
javascriptでフォルダ内のファ...
-
JavaScriptでIEのウィンドウを...
-
助けてください!スパムメール...
-
クロスドメインでクッキーの取得
-
「終了していない文字列型の定...
-
C#でTextBoxに数値のみ入力可能...
-
jspで、javaを呼び出すときの引...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォルダを自動で開く
-
JAVASCRIPTでページ転送する方法
-
PHPを使って作成したボタンをク...
-
自作のJavaScriptを既存のペー...
-
表示ページによって、aタグ内の...
-
C#の質問です。
-
至急お願いします!javascript:...
-
ホームページ 専用ページ 直リ...
-
ページ遷移時にアコーディオン...
-
VB.NETからWEBブラウザの操作に...
-
ページ横スクロールでjQuery li...
-
Javascriptのカウントダウンに...
-
SVGでダブルクリックされた時に...
-
onmousedownを自動で押して、イ...
-
C# ブラウザの自動クリック
-
”閉じる”リンクについて
-
フレーム名を読んで、targetを...
-
「google apps script」情報取...
-
リンクを右クリックするとペー...
-
リンクからPOST送信を、右クリ...
おすすめ情報