私は現在、セキュリティが大きな問題となっている従来の ASP プロジェクトに取り組んでいます。暗号化方式(md5)が安全でないだけでなく、SQL インジェクションの問題も心配です。私はまだインジェクションが苦手で、知っている基本的なことしか試していません。ユーザー入力を「保護」する機能を見つけましたが、実際にインジェクション攻撃を防ぐために何かをしているのか疑問に思っています。関数は次のとおりです。
function sqlfix(input)
if not isnull(input) and input <> "" then
input = replace(input, ";", ";")
input = replace(input, "'", "'")
input = replace(input, """", """)
input = replace(input, "(", "(")
input = replace(input, ")", ")")
input = replace(input, "|", "|")
input = replace(input, "<", "<")
input = replace(input, ">", ">")
input = replace(input , "'", "''")
'input = Server.HTMLEncode(input)
'input = Server.UrlEncode(input)
sqlfix = input
else
sqlfix = ""
end if
end function
何年も前に mysql_* 関数を使って初めて PHP を始めたとき、このようなことをしたことを覚えていますが、今では PDO とパラメーター バインディングに移行しています。ただし、これが ASP アプリケーションにとってどれほど安全かはわかりません。ご意見ありがとうございます。