• 締切済み

IIS7.0におけるSQLインジェクション対抗策について教えてください

IIS7.0におけるSQLインジェクション対抗策について教えてください 1ヶ月ほど前からデータベースに悪質なスクリプトが書き込まれるようになりました。 そこで、DBユーザー名もパスワードも変更しましたがそれでも書き込まれるので、データベースにUPDATEもしくはinsertしているファイルにエスケープ処理をしようとしていますが、ファイル数が多いので 一旦、それらのファイルに外部からアクセスできないようにIISで設定してしまいました。 ほとんどすべてのIPアドレスからのアクセスを拒否するようにマスクは0.0.0.0に設定しています。 アクセスしようとすると403エラーになります。 ところがそれでもスクリプトが書き込まれるのです。 こういう攻撃って可能なのでしょうか? ファイルアクセス不可にも関わらず、テーブルに書き込みされるということは、ファイルにエスケイプ処理を施しても無駄だと思い、 とりあえずDBのすべてのユーザーにテーブル」への挿入・更新権限を拒否しました。 これでやっと書き込みがなくなりましたが、この設定ではWEB上から何らかのデータ操作をしようとする毎にWEBサーバーにリモートデスクトップ等でアクセスして、SQLサーバーのユーザーに権限付与しなければならず、WEBアプリケーションとしての意味がなくなります。 対応策はあるのでしょうか 大変困っています。 サーバーへの解放ポートはport80のみで、当然、SQLポート1433どは閉じています

みんなの回答

  • inoue_kou
  • ベストアンサー率57% (27/47)
回答No.2

SQLインジェクションならwebサーバーのログに痕跡が残っていませんか? webサーバー経由でないとすれば一般ユーザーのアクセス権を取れれているかもしれませんねえ。 いずれにしろシステムのセキュリティに問題がありますので、一旦外部と切り離して見直された方がいいと思います。

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

SQLインジェクション対策の大半は値を直接SQL文に展開しないことです。

参考URL:
http://www.atmarkit.co.jp/fsecurity/column/ueno/42.html
avectoi
質問者

補足

そもそもファイルアクセス不能にしている状況で「値を直接SQL文に展開しない」という対策が有効なのでしょうか?

関連するQ&A

  • データベースのログインユーザー名とパスワードが分からない状態でSQLイ

    データベースのログインユーザー名とパスワードが分からない状態でSQLインジェクション攻撃は可能でしょうか サーバーの構成は以下の通りです ウィンドウズ2008サーバーR2のIIS7.0+SQLサーバ2008EXPRESS 以前win2000サーバーでウェブサイトを運営中コンテンツをごっそり抜かれてしまったことがあるので, 攻撃者はソース上からテーブル構造の知っていると考えられます。 現在テーブルに対してinsert処理もしくはUPDATE処理しているファイルは中国方面あるいはアジア圏のIPアドレスからは アクセスできないようにしており、403エラーが出るように設定していますので、ファイルに対してポストできないように なっているはずです。 この状態でテーブルへのスクリプトの書き込みは可能なのでしょうか 現在この状態でもスクリプトが書き込まれてしまいます。 仕方ないので、データベースのすべてのログインユーザーに対して書き込み・上書き権限を除外しました。 こうしたところ書き込みはなくなりました こうしてしまうと、商品情報などを登録するたびに、ユーザーに対して書き込み・上書き権限を与える必要があり、非常に生産性が悪い状態になってしまっています。

  • SQLサーバーのテーブルの値が更新できません

    お尋ねします。 SQLサーバー2005にDB1というデータベースにdbo_TB1というテーブルがあります。そのテーブルの特定の列の値を更新したいので、AC.mdbというアクセスのファイルにテーブルのリンクをし、更新したいファイルを用意して、アクセスのクエリでデータを更新しようとしましたところ、更新ができませんでした。  dbo_TB1を更新可能にするためには、どのようにして権限を与えればいいでしょうか。  SQLサーバー2005の知識を習得しようと学習を始めたばかりで、よく理解できていません。よろしくお願いします。

  • SQL server認証に必要な最低限のロールを教えてください。

    こんにちは、いつも参考にさせて頂いております。 SQL Server2008でDBを管理しているのですが、 あるインスタンスへSQL server認証ができません。 sysadmin権限をつけたら認証されたのですが、できるだけ権限は最小にとどめたいです。 そこで質問です。 SQL server認証に必要な最小のサーバー ロールとデータベースのロールは何でしょうか? アドバイスやヒントなど、何かお気づきでしたら教えてください。 どうか、宜しくお願いいたします。 [現在の設定] サーバー ロール:public ユーザーマッピング: 何も設定していません。 設定しようとDBにチェックすると、ユーザーにログインユーザーと同じ名が入り、 既に存在しています、と怒られてしまいます。 ユーザー名に違う名前(例えばdbo)を設定しても同様に怒られました。 なので、ここの設定は何もしないのが正しいのかな?と思っていますが、 根拠はありません・・ [環境] SQL Server2008 Windows Server2008

  • SQLサーバーについて

    アクセスユーザーです。 データベースを操作するならアクセスよりSQLサーバーの方が良いと聞いたのですが SQLサーバーのイメージがいまいちわかりません。 アクセスは、 ・テーブル ・クエリ ・フォーム ・レポート ・マクロ ・VBA がありますが、 SQLサーバーは、テーブルとクエリしかなくて、 テーブルの置き場として使うソフト。と言う認識であってますか?

  • LAN上のMDBをIIS(ASP)から開く

    DMZであるWEBサーバー(IIS4.0)からLAN上のMDBファイルを操作したいのですが・・・。うまくいきません。 ネットワークドライブでWEBサーバー側に登録して ADODB.Connectionで直接、またはODBC介してでやろうとしましたが駄目でした。 IIS側でODBCの登録自体はうまくいっているのか(?)MDBの最適化はODBCの画面から行えます。 IIS越しでASPからデータベースを開こうとすると [Microsoft][ODBC Microsoft Access Driver] ファイル '(不明)' を開くことができませんでした。ほかのユーザーが排他的に開いているか、データを読み取る権限がありません。 権限の問題なのでしょうか? LAN側のファイルもフォルダもeveryoneフルコントロールに してあります。(怖いけど(笑)) 同様のケースで過去に解決された方、または良い案がある方。ご教授下さい。

  • VBでSQL-serverをプログラムする

    VBでmdbファイルを操作するプログラムを勉強していますが、データベースをサーバー管理するならば、AccessではなくSQL-serverなどを使った方が良いと聞きました。 質問なんですが、 SQL-serverには、Accessと同じようにユーザーフォームを使ってデータベースシステムを構築するような機能が付いているのでしょうか? そもそもOracle、dBase、SQL-serverといったデータベースソフトは、DBそのものを作成するソフトであって、DBシステムを構築するにはVBなどによるプログラム開発が必要なのでしょうか? 分かりにくい質問ですみません。

  • アクセスからSQL Serverのデーターを更新することができない。

    アクセスのデーターをSQLサーバーへ移行する計画があり、準備のため SQL Developer バージョンで独習中です。SQLサーバーにコピーしたテーブルにアクセスからログインするとテーブルは見られるのですが、データーの変更については「このレコードセットは更新できません」と表示されます。権限の問題ではないかと思われます。 環境と現状の設定: XP Professional SQL Server 2008 Developer Visual Studio 2008  サーバー名: SVR-1 セキュリティー ログイン名: SVR-1\taro サーバーロールのメンバーシップ:sysadmin データーベース名: project ユーザー名: dbo ログイン名: SVR-1\taro 既定のスキーマ: dbo 所有されているスキーマ:なし データーベースのロールメンバーシップ: db_owner 不思議なことに、Visual Studio 2008を使って試作したデーターベースはアクセスから書き換えができます。セキュリティーの設定も何ら変わりがないのですが。 データーベース (project)のユーザー名(dbo)の「所有しているスキーマ」にあるdata_reader, data_writer欄にチェックをいれても結果は同じです。 どこをどのように設定すれば良いのか、ご教示戴きますようお願い致します。

  • IISの設定について

    IISの設定について質問させてください。 サーバにexeファイルを置いてIISにてエイリアスの設定をしてそのexeファイルをJavaScriptで実行しようとするのですが、どうしてもダウンロードになってしまいます。exeファイルの入っているディレクトリのエイリアスの権限設定はきちんと「実行(スクリプトを含む)」に設定してあります。 他にも設定する必要があるのでしょうか? 宜しくお願いします。 参考データ OS:NT4.0 Server

  • 特定ユーザーのみODBC接続可能としたい

    現在、下記構成にて社内Webを運用しております。 Windows Server2003 IIS6.0 SQLServer2000 ※1台のサーバーでIISとSQLが動いてます。 IISの規定のサイトのプロパティ⇒ディレクトリセキュリティ⇒ 認証方法は『匿名アクセスを有効にする』にチェックが入っており ユーザー名はIUSR_xxxで、統合Windows認証となっております。 また、SQLServer(Windows認証)のユーザーにIUSR_xxxとDomain Users が登録されており、それぞれのテーブルには両ユーザーにSELECTから DELETEまでの権限が付いてます。 現状、Web上からDBを操作(ある情報の検索や抽出)は可能で問題 ありませんが、今の設定だとドメインユーザーがODBC接続にて テーブルに直接アクセス出来てしまいます。 かといって、SQLServerに登録されているDomain Usersを削除 してしまうと、Webアクセスの際、エラーになってしまいます。 Webにはドメインユーザー全員がアクセス可能であり、かつ、 ODBC接続は特定のユーザーのみにしたいのですが、うまくいきません。 どのような設定を施せば可能になるのでしょうか? 勉強不足なものですから、情報的に足りないものがあるかと思いますが 宜しくお願い致します。

  • IISのWebサイトオペレータ

    Windows2003+IIS6.0のサーバにてサイト管理していますが、そのサイトに入るユーザを制限したいと 考えています。 以前、Windows2000+IIS5.0には「オペレータ」というタブがあり、Webサイトオペレータ権限を 与えるユーザを設定できましたがIIS6.0にはこれが見当たりません。 この、Webサイトオペレータの設定に代わるものはありますか? 代わるものが無い場合、他に何か良い方法はありますか? (CGIを使えばできそうなんですが、あいにく知識がありません・・・できれば設定で 何とかならないかな?と思います)