Go to the first, previous, next, last section, table of contents.

### `set_secure_flag`, `set_secure_mode`

`set_secure_flag(fname,m)`
`set_secure_mode(m)`
  :: 関数の実行権限を設定する. (web サービス用)

return
  整数
fname
  文字列
m
  整数

- `set_secure_flag`, `set_secure_mode` は asir を web サーバ等で公開するために加えられた関数. `set_secure_flag` で公開する関数を指定する. `secure_mode` が 1 の場合は `set_secure_flag` で指定された 関数しか実行できない. 関数の実行途中では `secure_mode` が 0 となっているので, 任意の関数を実行できる. またエラーの時等は, `secure_mode` は 1 に自動的に復帰する. ただし `def` は実行できない. 公開する関数では, その処理中は任意の関数が実行できるので, security に十分注意した実装をする必要がある.
- `set_secure_flag` は, fname の secure flag を m にする. 公開する命令は 1 に設定する.
- set_secure_mode(1) で `secure_mode` が 1 となり, 公開された関数しか実行できなくなる. quit 等も実行できないので注意.
- `timer` の引数として secure_flag を設定していない関数を 指定して実行してもエラーが表示されない. このときは, `ctrl("error_in_timer",1)` を実行しておく.

    [1194] set_secure_flag("print_input_form_",1);
    1
    [1195] set_secure_flag("fctr",1);
    1
    [220] set_secure_mode(1);
    1
    [1197] fctr((x-1)^3);
    [[1,1],[x-1,3]]
    [1198] fctr(shell("ls"));
    evalf : shell not permitted
    return to toplevel

`参照`
  @xref{timer}

ChangeLog

- `set_secure_flag`, `set_secure_mode` は asir を web サーバ等で公開するために加えられた関数. sm1 の同様な関数 RestrictedMode で採用された方法を用いている. つまり, `set_secure_flag` で公開する関数を指定する. `secure_mode` が 1 の場合は `set_secure_flag` で指定された 関数しか実行できない. v関数の実行途中では `secure_mode` が 0 となっているので, 任意の関数を実行できる.
- この関数は 2004-10-27 から 2004-11-22 にかけて開発された.
- cgiasir.sm1, cgi-asir.sh と組み合わせて cgi サービスを提供するために 利用する. cgi-asir.sh では `CGI_ASIR_ALLOW` 環境変数で公開するコマンドを指定する.
- 1.24--1.25 OpenXM_contrib2/asir2000/builtin/miscf.c
- 1.36--1.38 OpenXM_contrib2/asir2000/parse/eval.c
- 1.6--1.7 OpenXM_contrib2/asir2000/parse/function.c
- 1.33 OpenXM_contrib2/asir2000/parse/parse.h

Go to the first, previous, next, last section, table of contents.