読者です 読者をやめる 読者になる 読者になる

とあるASPのシステム、今まで2度に渡って登録画面のsession化を(片手間に)試みては失敗していたのですが、いよいよ本格的にsessionを使わないと実現できないとある機能を追加することになって、本格的に検証ですよ。


ASPの時代に作られたシステムなので、submitのactionがpostbackでなくて次の画面限定、かつ値の引き回しはhiddenを使っててサーバサイドで値を保持しない、そこに来て初期画面はinputがブランクでwindow.back()でブラウザ任せの再入力を前提としているのですが、これがどうにもcookie or sessionの制御と相性が悪くてどこかをなんとかしようとすると他の部分で多大な作業量が必要になるか破綻を起こすかの二択。
着地地点は「値を保持したままconfirmから『戻る』動作を実装する」という単純な話なのですが、そのためにはクライアントサイドならcookie、サーバサイドならsessionで値を保持する必要があって(事実上はsession一択)、postbackではない今のアーキテクチャだとなかなか単純には行かない話。

セキュリティ面を考えても、hiddenだとHTMLエスケープ後の値しか引き渡せず、inputからresultに行くまでに値の劣化がおこって、さらにSQLインジェクション対策とかで劣化した文字列に対して更に文字列加工しているから、どこでどんな変換をしているのか最初から最後まで気にしないとイカんという、関心の分離って美味しいの?的なアレです。
#しかも、SQLインジェクション対策の処理をinput側のjavascriptでやっているとか、関心の分離どころか役割分担も定かでない処理の乱交状態‥‥


これも、sessionで値を引き回せば、View側ではHTMLエスケープをして表示しつつ値は破壊せず、result側ではHTMLエスケープのごみが残らずSQLインジェクション対策だけすれば良い、という関心の分離と役割分担が同時に実現可能、のハズなのですが。