8

仕事で古いプロジェクトを更新する必要があります。PHP スクリプトには慣れていますが、クラシック ASP の経験はありません。

  • 使用すべき関数はありますか?
  • いくつかの基本的な保護のための優れた機能を提供してもらえますか?
  • aspにパラメータ化されたクエリのようなものはありますか?

ありがとう!

4

5 に答える 5

9

はい、従来の ASP (より正確には従来の ADO) でパラメーター化されたクエリを使用できます。

ここにリンクがあります。

出力のエンコードに関しては、最新の Microsoft Anti-XSS ライブラリのラッパーを作成し、それを Server.CreateObject で呼び出したいと思うかもしれません。私は.Netで多くの時間を費やしているため、この種の専門家にはほど遠いので、これがうまくいくと思います。

Server.HTMLEncode は、いくつかのエンコーディング文字をブラックリストに登録するだけなので、実際には十分ではありません。Anti-XSS ライブラリは、許容できるものをホワイトリストに登録するため、はるかに優れています。

于 2009-01-14T20:34:32.947 に答える
7

ユーザー入力をサニタイズするには、常に Server.HTMLEncode を使用してください。

たとえば、フォームのテキスト ボックスから変数を設定する場合:

firstName = Server.HTMLEncode(trim(request.form("firstname")))

于 2009-01-14T18:53:13.980 に答える
2

SQLインジェクションに注意してください。ユーザー入力をSQL文字列に連結してから実行しないでください。代わりに、常にパラメーター化されたクエリを使用しました。

于 2009-01-14T19:14:57.930 に答える
1

興味深いかもしれないIsNumber、 etceteraなどのIsで始まる関数がたくさんあります。IsArrayまた、整数を期待している場合は、CLng(Request("blabla"))それを取得するために使用できます。したがって、整数でない場合、CLng関数はエラーを発生させます。

于 2009-01-14T19:21:27.883 に答える
1

これを行う 1 つの方法は、不適切な文字を探してオブジェクトを反復処理するチェックをheader.aspファイルに追加することです。Request例えば:

<%
    for each x in Request.Form ' Do this for Request.Querystring also
        If InStr(x,"<") <> 0 Then
            ' encode the value or redirect to error page?
        End If
    next
%>
于 2009-01-14T19:35:46.373 に答える