- PR -

JavaScriptを使用せずにリンクをSUBMITする方法

投稿者投稿内容
taku
ぬし
会議室デビュー日: 2002/11/12
投稿数: 918
お住まい・勤務地: 墨田区→中野区
投稿日時: 2004-02-27 11:41
引用:

GOLF@スポコンさんの書き込み (2004-02-27 11:23) より:
○やりたっかた事
商品の一覧画面があり、その商品名はテキストリンクです。
その商品名をクリックしますと、コードを引数にして、
商品の詳細画面へ遷移し、画面を表示すると言った事です。
GETでも可能かと思いますが、セキュリティー、バイト制限等がありますので
却下されました。


 一切のスクリプトが不可なら無理ですね。
セキュリティーと仰っていますが、
一覧画面から詳細画面へ渡す商品のコード程度なら、
セキュリティー上殆ど問題ないと思いますが。
バイト制限に至っては255バイトまでならOKですし。
却下する理由はないと思いますね。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-02-27 11:40
引用:

GOLF@スポコンさんの書き込み (2004-02-27 11:23) より:

○やりたっかた事
商品の一覧画面があり、その商品名はテキストリンクです。
その商品名をクリックしますと、コードを引数にして、
商品の詳細画面へ遷移し、画面を表示すると言った事です。
GETでも可能かと思いますが、セキュリティー、バイト制限等がありますので
却下されました。


 テキストのリンクなら、 href=〜.asp?code=xxxxxxxx でいいのでは?というか、どこに商品コードを蓄えようとしていたのでしょう? input type=hidden ?

 一般的に「使用は何でも可」とすると、製造に使用できるものが制限されます。反対に使用に制限を設けると、製造に使用できるものの範囲が広がります。
 今回は「使用は何でも可」なので、製造は多くの制限を受けます。このあたりの落としどころを、どう設定するかというのがシステム設計者の責任なのですが、責任者はどうお考えなのでしょう?

#あと、ここって.NETなんですよね、実は。。。
#いや、わかる人がわかる範囲で答えればいいのですが、
#.NETの世界を回答に持ち込まれることは、覚悟しておいてください。


追加
> 一覧画面から詳細画面へ渡す商品のコード程度なら、
> セキュリティー上殆ど問題ないと思いますが。
 私もそう思ったのですが、例えば、直に入力されて、ちょっとずつ変えられたり、極端に大きな値をながされたりしたら。。。

[ メッセージ編集済み 編集者: Jitta 編集日時 2004-02-27 11:43 ]
taku
ぬし
会議室デビュー日: 2002/11/12
投稿数: 918
お住まい・勤務地: 墨田区→中野区
投稿日時: 2004-02-27 12:02
引用:

Jittaさんの書き込み (2004-02-27 11:40) より:
> 一覧画面から詳細画面へ渡す商品のコード程度なら、
> セキュリティー上殆ど問題ないと思いますが。
 私もそう思ったのですが、例えば、直に入力されて、ちょっとずつ変えられたり、極端に大きな値をながされたりしたら。。。


 値を変えられて問題なのは、会員限定の商品とか、
そういうのが無ければ何も問題がないのでは?
これならチェックを入れれば回避できるかと思います。
極端に大きな値でも、SELECT文に渡すだけでしょうから問題ないと思います。
GOLF@スポコン
常連さん
会議室デビュー日: 2003/11/26
投稿数: 30
投稿日時: 2004-02-27 12:05
皆様本当にありがとうございました。

結局、
JavaScritpを使用しない場合 ⇒ POSTは不可能(大容量データ送信)
JavaScritpを使用しない場合 ⇒ **.asp?code=****&id=**** といった方法でデータを送信(大容量は不可能)

ですよね。

今回は私が初めて設計するのですが、スキル不足もあり、
本当にできない・できるのか回答ができなく質問させて頂きました。

**.asp?code=****&id=****
って全部で256Byteなんですかね?

コードだけならいいのですが、
商品概要からの検索画面があり、
その入力BOXに制限を設けたくない、といった要望があり、
DBのレイアウトはTEXT型で2000文字入力可能です。
その場合に問題ないのかといったところも絡んできています。


それぞれの画面IDとかも送信しないといけない為
HIDDENに格納しています。(なのでPOSTでしたっか理由)

Session変数も考えたのですが、
JavaScriptを使用できない端末でもいいまいsたので
Session変数も無理かな思っています。

よろしくお願いします。。
永井和彦
ぬし
会議室デビュー日: 2002/07/03
投稿数: 276
お住まい・勤務地: 東京都
投稿日時: 2004-02-27 12:30
引用:

**.asp?code=****&id=****
って全部で256Byteなんですかね?



引用:

http://ns1.php.gr.jp/pipermail/php-users/2001-September/001732.html より:

RFC2068的には
http://www.csl.sony.co.jp/cgi-bin/hyperrfc?rfc2068.txt
3.2.1 General Syntaxにて

(中略させていただきまし)

URIの長さ制限は決めてないみたいですね。



ということで、長さ制限はRFC的にはないようです。まあ、現実問題として携帯等には結構厳しい制限があったりしますので、256byteが通るかすらも怪しい感じですが。

引用:

コードだけならいいのですが、
商品概要からの検索画面があり、
その入力BOXに制限を設けたくない、といった要望があり、
DBのレイアウトはTEXT型で2000文字入力可能です。
その場合に問題ないのかといったところも絡んできています。



これ、よく分からないのですが。受ける方が最大2000Byte入ってるからといって、ユーザーさんが検索キーワードとして2000Byte打ち込める必要はないのでは?
あと、どうこれが先の話の問題に絡んでくるのか分かりません……。少なくとも検索処理をSubmitするためのインターフェースはボタンで構わないですよね……。
#さらに、2000Byteを検索キーとして渡したりすると、実装(や環境)によってはそれ単体で悲鳴をあげるかも知れません。Streamからパラメータを流し込む等の工夫が必要になる可能性があります

引用:

それぞれの画面IDとかも送信しないといけない為
HIDDENに格納しています。(なのでPOSTでしたっか理由)



HIDDENもあっさり捏造されます。お気を付け下さい。

引用:

Session変数も考えたのですが、
JavaScriptを使用できない端末でもいいまいsたので
Session変数も無理かな思っています。



JavaScriptとSessionはあまり関係無さそうに思えますが……クッキーならまだしも。
で、クッキー無しでもURLに付加(/HIDDEN)で何とか出来るでしょうし。
#URLに付加すると、またURL長の問題が出ますが

引用:

> 一覧画面から詳細画面へ渡す商品のコード程度なら、
> セキュリティー上殆ど問題ないと思いますが。
 私もそう思ったのですが、例えば、直に入力されて、ちょっとずつ変えられたり、極端に大きな値をながされたりしたら。。。



セッション内に「画面にリンクとして提供した商品IDの一覧」でも持っておいて、そこに該当しないものは全て不正アクセス扱いにするとかすれば商品コードもガード出来るような気もしますが、まあ、あまり意義のある方針だとは思えないですね……。


[ メッセージ編集済み 編集者: 永井和彦 編集日時 2004-02-27 12:31 ]
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2004-02-27 12:40
引用:

GOLF@スポコンさんの書き込み (2004-02-27 12:05) より:
**.asp?code=****&id=****
って全部で256Byteなんですかね?


「って全部で」→「を合わせて」?
#前に2KBまでって聞いたような・・・。

引用:

それぞれの画面IDとかも送信しないといけない為
Session変数も考えたのですが、
JavaScriptを使用できない端末でもいいまいsたので
Session変数も無理かな思っています。


Sessionはサーバサイドで使用しますので端末とは関係ないです。
ただ、選択された商品コードを渡すには不向きかと。

#「商品概要からの検索画面」が2000文字入力?
#キーワード検索の方が効率良いような・・・。
_________________
まゆりん @ わんくま同盟
Blog る。
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2004-02-27 13:11
引用:

GOLF@スポコンさんの書き込み (2004-02-27 12:05) より:
**.asp?code=****&id=****
って全部で256Byteなんですかね?


永井さんのおっしゃってるとおり、RFCには長さ制限の記述は無かったと記憶しますが、
うちの環境で試した場合、1KByteで切られた経験があるので、環境によって様々かと思います。
ブラウザの側で、あまり長いURLを打ち切ったり、サーバー側でそれ以上受け取らない場合もあるだろうし、途中でフィルターされる場合・・・など、あるかもしれません。
※256Byteってのは経験的に、確実に送られるByte数?

なぜ、テキストリンクに拘るのか分りませんが、もしボタンに見えるのが嫌なだけなら、スタイルシートを使って、ボタンの形状を隠してしまえばいいのでは?
taku
ぬし
会議室デビュー日: 2002/11/12
投稿数: 918
お住まい・勤務地: 墨田区→中野区
投稿日時: 2004-02-27 13:13
引用:

まゆりんさんの書き込み (2004-02-27 12:40) より:
引用:

GOLF@スポコンさんの書き込み (2004-02-27 12:05) より:
**.asp?code=****&id=****
って全部で256Byteなんですかね?


「って全部で」→「を合わせて」?
#前に2KBまでって聞いたような・・・。


一応、私がここ3年ほど愛用している、
「オールカラー 最新実用HTMLタグ辞典」
http://www.cbook24.com/bm_detail.asp?sku=99916994
には、
[抜粋]
GETでは255文字バイトまでしか送信できません。
[/抜粋]
となっています。

引用:

Sessionはサーバサイドで使用しますので端末とは関係ないです。


 セッションは端末とは無関係ではないと思いますが。
何故かというと、通常は、サーバーは、
クライアントのクッキーをにあるセッションIDを見て、
サーバーで所持しているセッションを区別しているからです。
携帯端末を想定する場合は、クッキーを使えるはずもないので、
URLリライティングをすることになります。

##追加
引用:

なぜ、テキストリンクに拘るのか分りませんが、もしボタンに見えるのが嫌なだけなら、スタイルシートを使って、ボタンの形状を隠してしまえばいいのでは?


 携帯端末を想定する場合、スクリプトと同様、スタイルシートも不可なのでは?

[ メッセージ編集済み 編集者: taku 編集日時 2004-02-27 13:17 ]

スキルアップ/キャリアアップ(JOB@IT)