マイネ王のURLリンクのバグテスト → 事務局へ連絡→直りました!
事務局にも連絡する前提で、マイネ王の不具合のテストです。
以下のURLをマイネ王に貼ると「403 Forbidden」になるようです。
https://www.smbc-card.com/olentry/affiliate/online_entry.do?bno=03401038131
※3/7夕方に直ってエラー発生しなくなりました
調べるとURLに
「?bno=」
というのが入っているのが、エラー発生のポイントみたいです。
でも必ずエラーになる訳でもなくて、
https://google.co.jp?bno=1
だと大丈夫です。
こっちも大丈夫みたい。
https://news.yahoo.co.jp/pickup/6420170?bno=1
大丈夫みたい。
ピリオドがあるとダメなのかな?
https://news.yahoo.co.jp/pickup/6420170.do?bno=1
大丈夫でした。
うーん、何で引っ掛かっているんだろう…?
興味ある方は試してみて下さい。
(これはバグの規則性を見つける為のスレです)
---追記---
規則性がわかりました!
→少し間違えていたので3/6に書いた規則性は消しました。
例えば下記のようなURLで確実にエラー発生します。
https://on?no=1
https://onabc?abcno=123
https://one.abc.com?cno=a
https://www.yahoo.com/on?XXXno=x
※3/7夕方に直ってエラー発生しなくなりました
事務局へ連絡しました。
---3/7追記---
規則性を訂正します。正しくは、
URLに
/on*no=*
を含む場合にエラー発生します。
*は「/」を除く1文字以上の文字列です。
ですので、「/」を入れるとエラー発生しないことから昨日「サブドメイン+ドメインまたはディレクトリ」と書いたのは間違いでした。
---3/7 18:30追記---
17時過ぎ、事務局よりシステム調整してエラー解消、との連絡が来ました。
https://news.yahoo.co.jp/pickup/6420170/on?bno=1
では「bno=」は無くてもエラーになるのか
https://news.yahoo.co.jp/pickup/6420170/on
「on」と「bno=」と両方ある時にエラーになるみたいです。
ではディレクトリーを1階層減らしてみます。
https://news.yahoo.co.jp/pickup/on?bno=1
「on」から始まるディレクトリ、引数「on=」がエラーのトリガーみたい。
では、次に、ドメイン名を「on」にしてみます。
https://on?bno=1
・ドメインかディレクトリがonで始まること。
・引数「bno=」に何か値があること
これで確実にエラーになります。
途中にonでもエラーにならない
引数bnoが空でもエラーにならない
です
https://on123?bno=1 だとエラー
https://1on23?bno=1 だと正常
https://on123?bno= だと正常
引数の名前は「bno」だけではなく「ano」でも「123no」でも何でもエラーになります。「no」で終わる引数がトリガーみたい。
・「on」で始まるサブドメイン、ドメイン、ディレクトリ
・「no」で終わる引数
がエラーの規則性かな
>> さと さん
これ...どこかマイネ王なりmineoなりオプテージのURLで具体的なリンクって、あるのですか?実在するURLかどうか、という意味ですかね?
本文一番上のURLは、三井住友カードの紹介URLで本当に実在するものです。
オプテージのURLは知らないです。
そもそもマイネ王から外部サイトへ移動する時のプログラムのバグです。オプテージのサイトは関係ないと思いますよ。
https://king.mineo.jp/
オプテージやmineoはどうなのか試してみます。
mineo
https://mineo.jp/campaign/cp-20220201-1/?cid=sea_gkt_XXXbr_SP_A01_00000&gclid=CjwKCAiA1JGRBhBSEiwAxXblwR75lRl9T0-EU2S-0ODLc3TUflI1S0V-YFxAKdd-fm8JaLhCwRPVRBoCcuYQAvD_BwE
オプテージ
https://optage.co.jp/
>> wzjm さん
仕組みを説明すると…1、掲示板の投稿やコメントの「送信」をすると、書き込んだデータが記録されて、その記録を元に画面が表示されます。
2.そのデータの記録(または画面組み立て)の時に、自サイトのURLは直接リンクを張る。他サイトのURLは「リンク先の確認」というプログラムへのリンクを張る。という仕組みになっています。
他サイトには直接移動しないんです。価格comとかもそうですよね?
3.で画面上のURLをタップした時、「リンク先の確認」というプログラムが動きます。そのプログラムにバグがあるんです。
移動先URLに「on」や「no」が含まれる時に何か特殊な意図せぬ動きをしてエラーになるというバグです。
>> wzjm さん
ブラウザで長押しや右クリックして、リンクのURLをコピーして見てみるとわかると思います。・自サイトのURLは、そのままのURL
・他サイトのURLは全部、「https://king.mineo.jp/redirect/confirm」
になっていると思います。
この「redirect/confirm」がバグってるのですね。
>> さと さん
うーん...何だかややこしいですが、>>「redirect/confirm」がバグってる
は、「Aというサイト→Bというサイトへ自動的に転送」(これが「redirect」?)を「『しても良いですか』と確認」する(これが「confirm」?)命令がおかしいということですかねぇ?
超ドド素人の戯言とお思いになるかもしれませんが😓
下記のURLを実際にクリックして見比べてみて下さい。
例えば、YahooニュースのURLをマイネ王に書いた場合
コレ「https://news.yahoo.co.jp/pickup/6420170」
下のような画面遷移になります(正しい動き)。
【マイネ王】この画面 掲示板「reports」画面
↓(URLタップ)
【マイネ王】リンク先の確認「redirect/confirm」画面
↓(URLタップ)
【Yahoo!】ニュース画面
-----
次の例で、YahooニュースのURLを間違って書いた場合
コレ間違い→「https://news.yahoo.co.jp/pickup/6420170.on」
下のような画面遷移になります(正しい動き)
【マイネ王】この画面 掲示板「reports」画面
↓(URLタップ)
【マイネ王】リンク先の確認「redirect/confirm」画面
↓(URLタップ)
【Yahoo!】エラー画面
-----
ここ本題。YahooのURLに「on*?no=*」を含む場合
コレ間違い→「https://news.yahoo.co.jp/on?no=1」
本来なら上記例と同じ動きになるはずが、2番目のマイネ王の画面でエラーが発生します(意図しない動き=バグ発生!)
【マイネ王】この画面 掲示板「reports」画面
↓(URLタップ)
【マイネ王】リンク先の確認「redirect/confirm」画面エラー!!!
「redirect/confirm」というのは、画面の名前で、マイネ王のプログラムを作った人が決めた名前です。別に日本語で「kakunin」や「idou」という名前でも良いし「ABC」でも「123」でも何でも良いんです。ファイル名やフォルダ名と同じです。
(この辺はややこしいので無視して貰ってOKですが)
テストです。
https://news.yahoo.co.jp/on/?no=1
https://news.yahoo.co.jp/on/a?no=1
https://news.yahoo.co.jp/on123/?no=1
https://news.yahoo.co.jp/on123/a/?no=1
どうも間違えていたみたい。ディレクトリ名onでは大丈夫でした。
画面名もしくは、ドメイン+サブドメインが[on*]がダメみたい。
https://on?no=1
https://on.abc/def?no=1
https://abc/on/def?no=1
https://on.abcdef?no=1
https://one.abc.com?cno=a
https://onno=a
https://on/no=a
https://on1no=a
URLに
on*no=*
を含む場合にエラー発生します。
*は「/」を除く1文字以上の文字のようです。
phpのソースを見ないとあれですが、おそらく取り込む文字列のフィルターを組んでいるはずですのでそこで誤作動を起こしているのだと思います。「%3A%2F%2F」が本来のものと変わっていますので変にエンコードにしてしまっているのだと思います。
>> Jijing さん
今URLデコードサイトで見ると「%3A%2F%2F」は「://」ですね。
本来のものと変わっているとは、どういう意味でしょうか?
URLのフィルターを組むものなのですね?
ウィルス対策とかですかねー?
変なURLの引数を与えられたら、ブラウザでスクリプト動いたりしますもんねー。
>> Jijing さん
色々試して、URLエンコードを見ましたけど、掲示板画面の方で変にエンコードされている事は無いみたいですよ。正しくエンコードされています。受け取った確認画面が変にデコードしている可能性はありますが、それは見えないのでわかりません。
/on*no=*
の時にエラーでした。
onの前にスラッシュが無いとエラーになりません。
>> Jijing さん
エンコードの話で、引数の「%3F」を「%」に変えて直接URL叩いたら、違うエラーになります。500 internal serverエラー
これもWebサーバーが出してるんですかね?
>> さと さん
すみません。エンコードミスでは無いようです。ぱっと見て、文字列が飛んでいるように思ってしまったようです。
今、文字列を並べて確認しました。おかしくないです。
済みません。m(_ _)m
> URLのフィルターを組むものなのですね?
ウィルス対策とかですかねー?
入力フォームに対して、フィルターを組むのはウイルス対策というよりは、クラッキング対策です。
その上で、「redirect/confirm」にURL文字列(エンコードされたもの)を ? を付けて引数として渡しているわけですが、やはりその先の処理ですね。
>> さと さん
> エンコードの話で、引数の「%3F」を「%」に変えて直接URL叩いたら、違うエラーになります。wwwの仕様として " :// " だったり "? "だったりは特殊文字だったりします。
それを "%3A%2F%2F" だったり、"%3F" に変換してから「king.mineo.jp/redirect/confirm」へ渡すという動作をしています。
ですので、「%3F」を「%」に変えると%の後ろの英数字がコードとして処理しますので、エラーとなります。
私の余計な的外れなコメントで混乱させてしまったようです。
重ねてお詫びいたします。
~~/on文字列?変数=引数 がNG
~~/on文字列?変数= 引数が無ければOK
~~/「on以外の文字列」?変数=引数 OK
https://news.yahoo.co.jp/pickup/6420170/on?bno=1
NG
https://news.yahoo.co.jp/pickup/6420170/on?bno=
OK
https://news.yahoo.co.jp/pickup/6420170/gn?bno=1
OK
>ご指摘頂きました点につきましてシステムの調整を行いましたので、
エラーが解消されているかと存じます。
という事で確認したら直っていました。
>> Jijing さん
直りましたね、良かったです。すみません上のコメントにお返事しようと思っていたのですが、考えるのに疲れていて後回しにしていたら直りました。(ワクチン後頭がボーッとしています)
>> imaru2019 さん
>おつかれさまでした。ありがとうございます。直ったので良かったです。