UWSCスクリプトのセキュリティ対策

UWSCスクリプトに色々情報が書かれているので、
セキュリティに懸念があります。
誰でもパスワードが読み取れたり、
実行できたりするので、何か対策はありますか。
また、指定のフォルダからのみ実行できるようにすることは可能ですか。
UWSCスクリプトは便利ですが、
スクリプト自体を持ち出されたり、読み取られたり、
他の人でも実行できてしまうケースがあります。
いくつか対策を考えてみましたので下に記して見ます。
※パスワード、ファイルの持ち出し、その他の各セキュリティポリシーはご自身で検討お願いします
※UWSCのスクランブルについても絶対に解読されない事を保障するものでもありません

スクランブルをかけて、解読を困難にする

まずはスクランブルを実施することで、
中身の解読を困難にしてしまう方法があります。
パスワードを埋め込んでいたりする場合は、
ファイルの中から該当情報を取得することが難しくなります。
スクランブルのかけ方については、
コチラの記事の「スクランブル」をご参照ください。

実行時にパスワードを要求する

INPUT関数IF文を組み合わせて、
実行時にパスワードを要求するようにすることができます。
この方法とスクランブルの組み合わせで、
セキュリティを向上させることができます

IFB INPUT("パスワードを入力してください","",TRUE) <> "1234" THEN
  MSGBOX("パスワードが異なるため処理を終了します")
  EXITEXIT
ENDIF

PRINT "処理を実行しました!"

上のスクリプトは、
パスワードに「1234」を入力しないと、
次の処理が実行されずに終了してしまいます。
このスクリプトにスクランブルをかけることで、
実行時パスワードの取得も困難になります。

指定のディレクトリからのみ実行可とする

DOSCMD関数で、
スクリプトの実行位置ディレクトリを知ることができます。
これが指定のディレクトリと異なる場合は実行しないよう制御することができます。

CURDIR = TRIM(DOSCMD("CD"))

IFB CURDIR <> "C:\uwsc" THEN
  MSGBOX("指定位置と異なります")
  EXITEXIT
ENDIF

 PRINT "処理を実行しました!"

*

上記のスクリプトでは、Cドライブ直下にuwscというフォルダを作成し、
そこにあるスクリプトのみ実行できる仕組みになっています。
別のマシンでも同一のフォルダ構成を作成された場合は、
実行可能となる点は注意です。

別のファイルを読み込むようにする

CALLで、
他のスクリプトを呼び出す文を挿入しておけば、
単体での実行は出来なくなります。

 CALL "../required.uws"
 PRINT "処理を実行しました"

*

フォルダ構成は上記のようになっており、
一つ上の階層にrequired.uwsをおく必要があります。
required.uws自体は中身は空でも問題ありません。

外部Webサイトの情報を利用する

指定のページにアクセスし、
ページ内の情報が一致する場合に
次の処理に進むようにしてみます。
Webページの情報を書き換えて
スクリプトの実行可否を制御することができます。

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = FALSE //バックグラウンドでチェックするため、画面表示しなくてもよい
IE.navigate("http://canal22.org/")
REPEAT
 SLEEP(0.1)
UNTIL !IE.busy AND IE.readyState = 4
TITLE = IE.document.title
IE.QUIT
IFB TITLE <> "UWSC コバヤシ式" THEN
  MSGBOX("認証できません。処理を終了します")
  EXITEXIT
ENDIF

上のスクリプトはcanal22.orgへアクセスし、
そのページのタイトルを照合しています。
バックグラウンドでチェックが進めば良いので、
visibleのプロパティはFALSEにしています。

上記全ての方法を組み合わせてみる

さて、何種類か方法を挙げてみましたので、
全てを組み合わせたスクリプトを作ってみます。
処理の順番は・・・
現在位置(ディレクトリ)の確認

外部スクリプトの確認

パスワード入力

外部サイトの確認
となります。
最後に任意でスクランブルをかけ、
解読を困難にすることも可能です。
スクリプトは下記のとおりです。


続きは、ログインもしくは、登録してください



このページの先頭へ