基本情報技術者試験 -15ページ目

コンピュータでは、かけ算やわり算の演算を行うのに、

ビット状態をそのまま動かして処理を 行います。

それを、「シフト演算」と呼びます。


そのやり方には データの保持の仕方により、

算術シフト論理シフトの2種類あります。


この2つは、

演算に使うデータビット列の左端の1ビットを
符号ビットとして扱うかどうか

で異なります。



符号付きのデータの場合、

左端を符号としているため、マイナスの場合「1」がたっています。



算術シフトの場合は、

符号ビットを固定してシフトを行います。



論理シフトの場合は、

すべてのビットを対象にビットのシフトが行われます。


いずれの場合も、桁あふれをおこしたビットは捨てられ、

空いたビットには

算術シフトの右シフトの場合のみ、符号ビットと同じもので埋められ、


そのほかの場合は、で埋められます。


【基本情報技術者試験 平成25年秋期】
午前問2
32ビットのレジスタに16進数ABCDが入っているとき,

2ビットだけ右に論理シフトしたときの値はどれか


ア.2AF3  イ.6AF3  ウ.AF34  エ.EAF3


【解説】

16進数ABCDを まず2進数に変換します。


   A    B    C   D

   ↓    ↓   ↓   ↓

  1010 1011 1100 1101


右に2ビットの論理シフトをすると 左の2ビットが空白になります

 

  △△10 1010 1111 0011   最初の右2ケタの’01’がおちます


空いた場所を 論理シフトなので 0で埋めます。


結果

  0010 1010 1111 0011   

  ↓   ↓   ↓   ↓

   2    A   F    3


【正答】 ア

 

SQLインジェクション攻撃を防ぐ方法はどれか。

【選択肢 】


ア.入力中の文字がデータベースへの問合せや操作において,特別な意味をもつ文字として解釈されないようにする。

イ.入力にHTMLタグが含まれていたら,HTMLタグとして解釈されない他の文字列に置き換える。

ウ.入力に,上位ディレクトリを指定する文字(../)を含むときは受け付けない。

エ.入力の全体の長さが制限を越えているときは受け付けない。



【解説】

SQLインジェクション攻撃とは、
データベースと連動したWebサイトで、

データベースへの問い合わせや操作を行うプログラムにパラメータとしてSQL文の断片を与えることにより、データベースを改ざんしたり不正に情報を入手する攻撃のこと


を指します。


この攻撃に対する対策としては、


ユーザの入力値の中で、SQLにおいて特別な意味を持つ文字(単一引用符「'」やバックスラッシ

ュ「\」など)を、無効化してからSQL文に組み込むこと

が重要かつ効果的な対策となります。

ア.「入力中の文字がデータベースへの問合せや操作において,特別な意味をもつ文字として解釈されないようにする。」
正答です


イ.「入力にHTMLタグが含まれていたら,HTMLタグとして解釈されない他の文字列に置き換える。」
クロスサイトスクリプティング(XSS)を防ぐ方法
クロスサイトスクリプティングとは、動的にウェブページを生成するアプリケーションのセキュリティ上の不備を意図的に利用し、悪意のあるスクリプトを混入させること。


ウ.「入力に,上位ディレクトリを指定する文字(../)を含むときは受け付けない。」
ディレクトリトラバーサル攻撃を防ぐ方法
ディレクトリトラバーサル攻撃とは、ネットワークを通じたソフトウェアへの攻撃手法の一種で、 ファイル名を扱うようなプログラムに対して特殊な文字列を送信することにより、通常は アクセスできないファイルやフォルダ(ディレクトリ)の内容を取得する手法

エ.「入力の全体の長さが制限を越えているときは受け付けない。」
バッファオーバフロー攻撃を防ぐ方法
バッファオーバフロー攻撃とは、バッファオーバーフローを悪用して遠隔地からコンピュータを乗っ取ること


【正答】ア

符号の入力誤りなどを検出するために

符号の各々の桁の値に一定の規則に従った係数を乗じたものの和を求め、

それを定められた係数で割った余りを符号に追加して使用します。


この、元の符号に付加される数字(もしくは文字)のことを、チェックディジットといいます。

また、そのような値を利用した誤り検出方式自体のことを指していう場合もあります。


バーコードや銀行の口座番号などに利用されています。

クレジットカードなどは複雑なチェックデジットを何十にも重ねることにより、

簡単に番号を偽造できないようにしています。


(参考引用:e-words




【基本情報技術者試験 平成25年秋】

午前問3

4桁の整数N1N2N3N4から,次の方法によって検査数字(チェックディジット)Cを計算したところ,C=4となった。N2=7,N3=6,N4=2のとき,N1の値は幾らか。ここで,mod(x,y)は,xをyで割った余りとする。

検査数字:C=mod((N1×1+N2×2+N3×3+N4×4),10)

ア.0 イ.2 ウ.4 エ.6

【解説】
N2~N4,およびCの値を、計算する式に代入してN1を求めます。

4 = mod((N1×1+7×2+6×3+2×4),10)
4 = mod((N1+14+18+8),10)
4 = mod((N1+40),10)

(40+N1) ÷ 10 = n ・・・(余り) 4
となり
N1,は、 0以上 9以下の1ケタであると考えられることから

N1=4 であると 解答できます。

【正答】ウ