tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルasp.net クライアント/サーバ間での値の引渡し
記事No4106
投稿日: 2006/08/18(Fri) 18:13
投稿者KEN
VisualWebDeveloper2005にてWebアプリケーションの開発をおこなっております。
JavaScriptでクライアント側で条件を選択することによりSQL文を作成したものをサーバにPOSTし
てそのSQL文を使ってGridViewにて画面に表示させようと考えております。

しかしサーバ側でSQL文が受け取れないので困っています。
どなたかいい方法もしくは参考になるサイトを教えていただけないでしょうか?


   Dim StrSQL = Request.Form("SQL") ←StrSQLを下のscriptの中に渡せません

<script runat="server">

    Dim CnnGrid As New System.Data.SqlClient.SqlConnection("ConnectionString"
)
    Dim DapGrid As New System.Data.SqlClient.SqlDataAdapter(StrSQL, CnnGrid)
    Dim DatGrid As New System.Data.DataSet

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        'GridViewへデータを展開
        DatGrid.Clear()
        DapGrid.Fill(DatGrid)

        GridView1.DataSource = DatGrid.Tables(0)
        CnnGrid.Close()
    End Sub

</script>

[ツリー表示へ]
タイトルRe: asp.net クライアント/サーバ間での値の引渡し
記事No4107
投稿日: 2006/08/18(Fri) 18:23
投稿者なおこ(・∀・)
お世話になります。

クライアント側でどのように渡しているのかが
解らないと、取得方法もわからないです。

# それにしても、クライアントから SQL を投げさせるなんて、
# 危険すぎると思う...

[ツリー表示へ]
タイトルRe^2: asp.net クライアント/サーバ間での値の引渡し
記事No4108
投稿日: 2006/08/18(Fri) 18:32
投稿者KEN
早速の返信ありがとうございます。

今回初めてWebアプリケーションの開発をしているのでどういうやり方をすればいいのか全然分かり
ません。できればもっといい方法を教えてください。

クライアント側での渡し方は

<FORM NAME=Search method=POST action="SreachValue.aspx" target="SreachV
alue">

省略
SQL文を作成している(JavaScript)
Search.SQL.Value = StrSQL;
Search.submit();

</FORM>
というような感じです。

よろしくお願いいたします。

[ツリー表示へ]
タイトルRe^3: asp.net クライアント/サーバ間での値の引渡し
記事No4116
投稿日: 2006/08/21(Mon) 12:33
投稿者なおこ(・∀・)
お世話になります。

> SQL文を作成している(JavaScript)
> Search.SQL.Value = StrSQL;
> Search.submit();

Serch.SQL は、Input タグの hidden フィールドか何かですか?

> 今回初めてWebアプリケーションの開発をしているのでどういうやり方をすればいいのか全然
分かり
> ません。できればもっといい方法を教えてください。
一般的なアプリケーションでは、SQL はクライアント側で作成するのではなく、
サーバー側で作成します。
もし、悪意のあるユーザーから、DROP DATABASE ...
なんて投げられて実行してしまったら、ひとたまりもないからです。

たとえば、以下のような SQL を作成する場合、
SELECT FIELD1 FROM TABLE1 WHERE FIELD2 = 2
クライアント側からは、一番最後の 2 だけ受け取って
SelectCommand オブジェクトやら DataAdapter やら TableAdapter を
用いて、SQL をデータベースへ発行します。

[ツリー表示へ]
タイトルRe^4: asp.net クライアント/サーバ間での値の引渡し
記事No4203
投稿日: 2006/09/06(Wed) 12:24
投稿者KEN
お世話になっております。

返事遅れまして申し訳ありません。
状況を報告します。

複合検索を行うためそれぞれの検索にIDをつけ、IDと検索条件のみをサーバ側に渡し
サーバ側でSQL文を作成するようプログラムを変更しました。
例えばID=1、検索条件=Aと渡させたら WHERE FIELD1='A' などのSQL文を組み立てます。
IDとFIELDの対応表はサーバ側にもらせてあります。

またSQLインジェクションへの対策も「DROP」や「DELETE」などの文字がクライアントから
飛んできたらはじくように対策しました。

アドバイスありがとうございました。

[ツリー表示へ]