仕事で古いプロジェクトを更新する必要があります。PHP スクリプトには慣れていますが、クラシック ASP の経験はありません。
- 使用すべき関数はありますか?
- いくつかの基本的な保護のための優れた機能を提供してもらえますか?
- aspにパラメータ化されたクエリのようなものはありますか?
ありがとう!
仕事で古いプロジェクトを更新する必要があります。PHP スクリプトには慣れていますが、クラシック ASP の経験はありません。
ありがとう!
はい、従来の ASP (より正確には従来の ADO) でパラメーター化されたクエリを使用できます。
ここにリンクがあります。
出力のエンコードに関しては、最新の Microsoft Anti-XSS ライブラリのラッパーを作成し、それを Server.CreateObject で呼び出したいと思うかもしれません。私は.Netで多くの時間を費やしているため、この種の専門家にはほど遠いので、これがうまくいくと思います。
Server.HTMLEncode は、いくつかのエンコーディング文字をブラックリストに登録するだけなので、実際には十分ではありません。Anti-XSS ライブラリは、許容できるものをホワイトリストに登録するため、はるかに優れています。
ユーザー入力をサニタイズするには、常に Server.HTMLEncode を使用してください。
たとえば、フォームのテキスト ボックスから変数を設定する場合:
firstName = Server.HTMLEncode(trim(request.form("firstname")))
SQLインジェクションに注意してください。ユーザー入力をSQL文字列に連結してから実行しないでください。代わりに、常にパラメーター化されたクエリを使用しました。
興味深いかもしれないIsNumber
、 etceteraなどのIsで始まる関数がたくさんあります。IsArray
また、整数を期待している場合は、CLng(Request("blabla"))
それを取得するために使用できます。したがって、整数でない場合、CLng関数はエラーを発生させます。
これを行う 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
%>