04 | 2025/05 | 06 |
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
今日の任務は、経営管理システム向けの
Excelシートに埋め込まれた計算式をチェックすること。
(旧システムで出力した集計表と
新システムで出力した集計表を合算する、という内容。)
その途中であることに気が付いた。
「直接粗利」の算出式が、
「売上合計」-「月初仕掛残高」-「月末仕掛残高」
となっている。
「これはまずいでしょ。」と思って
この作業の依頼者に確認しに行くと、
「新システムでは仕掛残高は使用しないからそのままでよい。」
とのこと。
確かにシート上は仕掛残高がすべてゼロだから
計算結果としては問題ないが・・・。
とりあえず4600個のセルの確認が終わったので、
めでたしめでたし、としよう。
(営業利益の数値が今後違ったとしても僕のせいではありません。)
次のような注意書きがあった。
①各回答の文中には、絶対にカンマ「,」、シングルコーテーション「’」、ダブルコーテーション「”」を使わないでください。カンマ「,」、シングルコーテーション「’」、ダブルコーテーション「”」等を使うとエントリーシートがうまく出力できなくなり、選考結果に影響する場合があります。(点「、」、ピリオド「.」等は使うことができます。)
②文中での改行は、出力時に正しく表示されない場合が御座いますので、使用しないでください。
③本マイページは、セキュリティ上の理由から、ログイン後に何も操作されない時間が1時間経過すると、強制ログアウトとなります。ご注意ください。
記号を入力したら、選考結果に影響するって・・・。
実装で手を抜いて運用に制限を課す例の一つ。
現在携わっているプロジェクトで開発中のシステムが
やたらと「記号」に対して脆弱である。
(一応リリースはしたけど・・・)
そこで、記号に対して強いシステムを作るポイントを少しずつまとめていく。
ちなみに
・ASP.NET(VB)
・Oracle 10g
が前提。
【ポイント1】
「プログラムによってJavaScriptを動的に生成する際、シングルクォーテーションや円記号の扱いに注意する。」
DBから取得したデータの値を含んだJavaScriptをHTML上に展開する際、シングルクォーテーションや円記号が含まれていると、JavaScriptの構文エラーとなり、正しく動作しなくなる。
極端な例であるが、DBから取得した値をダイアログに表示させるスクリプトを動的に生成したとする。
例:alert('名称');
データが「MOS BURGER」の場合、
alert('MOS BURGER');
となり、正しく動作する。
しかし、データが「McDonald's」の場合、
alert('McDonald's');
となり、動作しない。
対策として、文字列を囲う文字をダブルクォーテーションに変更するという方法もあるが、
文字列にダブルクォーテーションが含まれていた場合、同じ問題が発生する。
そこで、「'」を「\'」に置換してから、展開するようにする。
ただし、円記号もJavaScript上では特殊文字であるので、「\」を「\\」に置換する必要がある。
■検証
テキストエディタに
<script>alert('McDonald's');</script>
と入力し、test1.htmlとして保存。
テキストエディタに
<script>alert('McDonald\'s');</script>
と入力し、test2.htmlとして保存。
test1は何も起きないが、test2の方はちゃんとアラートが表示される。
-------------------------------------------------------------------------
得意先検索ポップアップの一覧に「McDonald's」が表示されると、
チェックボックスにチェックを入れて選択ボタンを押しても
「選択されていません。」と出るのは、
シングルクォーテーションによってJavaScriptが壊れたからです。
(今のプログラム、作り悪すぎ・・・)
-------------------------------------------------------------------------
↓↓↓ システム屋なら読んでおいて損はないかも。
活動の記録をWebに残したい、
文章力を向上させたい、
2012年こそは何か始めたい、
そんな思いからブログを始めてみました。
稚拙な文章・内容ですが、
お付き合いいただけたら幸いです。