質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Q&A

解決済

5回答

1379閲覧

Webアプリの基本的なセキュリティ対策は開発言語を問わず同じ?

退会済みユーザー

退会済みユーザー

総合スコア0

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

0グッド

2クリップ

投稿2016/08/05 14:41

初心者で全然詳しくないのですが、例えばXSS対策などの基本的な対策方法(アルゴリズム)はどの言語でも同じ、必要になるのでしょうか?(言語そのものの脆弱性は別)
例えばPHP向けに書かれたセキュリティ対策は他の言語にも応用できるのですか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

対策項目自体は、言語を問わず同じです。Cやアセンブラなどの低レベルの言語を使う場合は、さらに項目が増えるかと思いますが。
フレームワークを使っている場合は、プログラマが明示的に対策しなくてもフレームワーク側で対策してくれているかもしれません。

投稿2016/08/05 14:55

otn

総合スコア84423

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/08/06 06:58

ありがとうございます! 参考になりました!
guest

0

ベストアンサー

PHP向けのセキュアなコードがそのまま他のプログラム言語で使えますか、という意味でしたら利用できません。

ですが参考にされた書籍・サイトなどでWebアプリケーション向けの一般的考慮すべき脆弱性とその対策が示されているならば、その考え方はプログラム言語を問わず利用できます。

###メジャーな脆弱性を知る
Webアプリでは以下のような主要な脆弱性があります。

  • HTML表示の仕組みの脆弱性
  1. XSS(クロスサイトスクリプティング)
  2. CSRF(クロスサイトリクエストフォージェリ)
  3. クリックジャッキング
  • セッション管理の脆弱性
  1. セッション固定化攻撃
  2. セッションハイジャック
  • HTTP通信時の脆弱性
  1. HTTPヘッダインジェクション
  • SQL発行時の脆弱性
  1. SQLインジェクション
  • 実装不備による脆弱性
  1. OSコマンドインジェクション
  2. ディレクトリトラバーサル

と主要な脆弱性を上げるたけでもこれだけありますが、
それぞれ一般的や対策方法は存在し、それぞれの言語で容易に対策するための仕組みも大体は提供されています。
(C、とかアセンブラ言語とかになると話は別)

例えばSQLインジェクションであれば、バインド機構を利用するという明確な対策方針が示されています。
(バインド変数、バインドパラメタと言われるものもこの仕組みを利用)

これらのキーワードと自分の利用したい言語を照らし合わせて、
対策方法を調査すると大体は回答に行き着くでしょう。

###フレームワークを用いた開発
フレームワークを用いた開発の場合、
特にHTML(ビュー部分)については、
暗黙的にXSS対策を自動で施しているものがあります。
意識せずとも対策されるケースもあるといったことは知っといて損はないでしょう。

###追記
IPAさんってばこんな素敵なページも用意してたのね…
セキュア・プログラミング講座

投稿2016/08/05 16:41

編集2016/08/05 16:56
Panzer_vor

総合スコア1636

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/08/06 06:57

ありがとうございます! 参考になりました!
guest

0

https://www.ipa.go.jp/security/vuln/websecurity.html

にとても良くまとめられています。

webアプリケーションである以上対策しなければならない点は(言語やwebサーバそのものの脆弱性を除けば)同じです。
脆弱性チェックシートが存在出来るのはこのためです。

それをどう実装するかは言語や環境によって異なり、言語や環境によっては標準で対応されているため対応しなくていいというケースもあります。

投稿2016/08/05 16:11

tanat

総合スコア18709

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/08/06 06:57

ありがとうございます! 参考になりました!
guest

0

言語そのものの脆弱性を除くと、当然言語そのものと関係のない部分しか残らないので、対策方法は同じようなものになります。

言語の脆弱性を除くとWebアプリに対する対策は、以下に関するものになるかと思います。
・DBへのアクセス
・表示
・session管理
・ブラウザ
*漏れていたらすみません^^;

各言語の仕様としては正しい動きが、上記の各所において問題点となるケースを、Webアプリに対するセキュリティ対策と呼ぶので、対策をしないことはありえません。

各言語共通のセキュリティ対策ポイントがあることは事実ですが、共通でない箇所(言語固有の箇所)も当然あるので、言語が変われば、一通りセキュリティに関して再調査することをおすすめします。

投稿2016/08/05 15:19

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/08/06 06:57

ありがとうございます! 参考になりました!
guest

0

  • 基本的な対策方法はどの言語でも同じか

違います。言語やフレームワーク側で対策してくれている場合もあります。
ただし、Webアプリケーションの基本的な脆弱性というのはどの言語でも大体同じ様に気を付けるべきと考えておくのは問題ありませんし、気をつけすぎて困ることはないでしょう。

  • どの言語でも対策は必要か

絶対に必要です。
一番基本的なユーザーが入力した情報や外部のWebサービスのデータを扱うときの脆弱性対策はどのWebアプリケーションでも必要です。入力したままを画面に表示したりSQL作成にパラメータを使わず利用したりすると悪意のあるスクリプトが入力内容に含まれていた場合に問題となります。
かといって、入力データをどのように用いるかはアプリケーション次第なので、安全に扱うように配慮する必要があります。

  • 例えばPHP向けに書かれたセキュリティ対策は他の言語にも応用できるのですか?

できるとは思いますが、各脆弱性に対してその言語ではどう対策すればよいかは調べた方が良い様に思います。

投稿2016/08/05 14:59

flied_onion

総合スコア2604

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/08/06 06:58

ありがとうございます! 参考になりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問