しかし、ユーザーによって入力されたコマンド文字列を無害化するように配慮せず、任意のOSコマンドを実行できるようにしてしまった場合、攻撃者が悪意のあるコマンド文字列を入力することで実行環境への侵入・乗っ取りやシステム破壊を許してしまうセキュリティ脆弱性が発生することもある[5]。このような攻撃手法は「OSコマンドインジェクション」や「コマンドインジェクション」と呼ばれている[6]。 コンピュータに接続された周辺機器を制御するための指令を「コマンド」と呼ぶ。ソフトウェアはシリアル通信などの規格化されたインターフェイスを経由して、機器の仕様にしたがった情報を送ることで、コマンドを発行してハードウェアと通信する。例えばグラフィックスハードウェア (GPU) やプリンターに対する描画命令などが挙げられる。コマンドはハードウェアを高度に抽象化したAPIやデバイスドライバーを通じて発行されることもあり、その場合アプリケーションソフトウェア層ではコマンドの存在を意識する必要がないことも多い。 グラフィカルユーザーインターフェイス (GUI) の要素を操作することで、対応するアクションを発生させることを「コマンド」と呼ぶこともある。例えばメニュー内の各アイテムや、ボタンをクリックしたときに特定の動作をソフトウェアに実行させることを、ソフトウェアやコンピュータに対する指示と見立てている。この「コマンド」は、GUIフレームワークにおける概念・用語として使用されていることがある[7]。 コンピュータゲームにおいて、ユーザー(プレイヤー)がゲーム内のキャラクターに与える指示のことを「コマンド」と呼ぶことがある。 例えば古典的なアドベンチャーゲームやシミュレーションゲーム、ターン制のロールプレイングゲーム(コンピュータRPG)では、場面に応じて各キャラクターが次にとることのできる行動がいくつかの選択肢として用意されており、この選択肢をコマンドと呼ぶ。画面上でコマンドが配置されている領域をコマンドメニューと呼び、縦方向や横方向にコマンドのテキストが列挙されていることもあれば、コマンドの動作を視覚的に表すアイコンが縦や横、あるいは円形に配置されていることもあるが、いずれもカーソルを動かして選択・決定するだけで実行される。各コマンドを選択した後は、さらに動作の対象となるもの(攻撃目標や使用するアイテム・魔法など)を選択する必要があるケースもある。 対戦型格闘ゲームでは、キャラクターごとに用意された固有の必殺技を繰り出すためのジョイスティック(レバー)やボタンを使った一連の入力手順や組み合わせのことをコマンドと呼ぶ。コマンドを完成させるには、一連の入力を一定時間内に終えなければならない。一般的に威力の高い技ほどコマンドが長く複雑になり、入力難易度が上がる傾向にある。 特定の画面または状況で一定時間内に特定の方向キーやボタンを順番に入力することで、公式マニュアルには記載されていないオプション(裏技)が使えるようになる「隠しコマンド」を持つ作品もある。 出典は列挙するだけでなく、脚注などを用いてどの記述の情報源であるかを明記してください。記事の信頼性向上にご協力をお願いいたします。(2021年8月)
周辺機器の制御コマンド
GUIにおけるコマンド
コンピュータゲームにおけるコマンド
脚注
出典^ コマンド(command)とは - IT用語辞典 e-Words
^ Imperative Programming Languages (IPL) 。School of Engineering & Applied Science 。The George Washington University
^ system - cppreference.com
^ std::system - cppreference.com
^ ENV33-C. コマンドプロセッサが必要ない場合は system() を呼び出さない
^ OSコマンドインジェクションの被害事例とその対策について解説|ICT Digital Column 【公式】NTTPCコミュニケーションズ
^ コマンド実行の概要 - WPF .NET Framework 。Microsoft Docs
関連項目
メニュー (コンピュータ)
Command パターン
外部リンク.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%;font-size:90%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}html.client-js body.skin-minerva .mw-parser-output .mbox-text-span{margin-left:23px!important}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}
command