假设我有一个 .NETHttpModule
可以分析传入请求以检查可能的攻击,例如Sql Injection
. 现在假设我的应用程序的用户在表单字段中输入以下内容并提交:
' OR 1=1
那是 Unicode 的' OR 1=1
。所以在请求中我得到类似的东西:
http://example.com/?q=%26%23039%26%23032%26%23079%26%23082%26%23032%26%23049%26%23061%26%23049
在我HttpModule
看来这很好(没有 Sql 注入),但服务器会正确解码它q=' OR 1=1
并且我的过滤器会失败。
所以,我的问题是:Is there any way to know at that point what is the encoding used by the request query string, so I can decode it and detect the attack?
我猜浏览器必须告诉服务器请求的编码是什么,这样才能正确解码。还是我错了?