iT邦幫忙

0

HttpRequest FormCollection 接收表單時收到覺得異常的資料所做的處理

  • 分享至 

  • xImage

請教
我使用webapi時用
HttpRequest httpRequest = HttpContext.Current.Request;
來接收表單送來的資料,如下
程式 video.Video = httpRequest.Form["Video"];
表單資料
<iframe width="560" height="315" src="https://www.youtube.com/embed/JSR5rROsvL0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
當接收後會出現
{
"Message": "具有潛在危險 Request.Form 的值已從用戶端 (Video="<iframe width="560" ...") 偵測到。"
}
看起來httpRequest有幫忙擋

但我用MVC專案
我用 FormCollection form 來接收表單資料
string v1 = form["addVideo"];
內容一樣如上,但v1會變成如下編過碼
PGlmcmFtZSB3aWR0aD0iNTYwIiBoZWlnaHQ9IjMxNSIgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9KU1I1clJPc3ZMMCIgdGl0bGU9IllvdVR1YmUgdmlkZW8gcGxheWVyIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBjbGlwYm9hcmQtd3JpdGU7IGVuY3J5cHRlZC1tZWRpYTsgZ3lyb3Njb3BlOyBwaWN0dXJlLWluLXBpY3R1cmUiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT4=

然後在下一行如下處理解回來
v1 = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(v1));
最後v1又會變原本未被編碼的正常iframe

我知道webapi可以設定取消httpRequest.Form的過濾
只是iframe的內容有好也有壞,並不一定要過濾,但好像沒有辦法針對某一個欄取消,而mvc裏的FormCollection會有自動編碼可以讓你存到資料庫時是經過編碼,到要讀出來時可以在去解,但webapi裏面用的
HttpRequest httpRequest = HttpContext.Current.Request;
httpRequest.Form["Video"];接收時覺得有問題就直接就把你擋下來

我試過用類別方式接受JSON傳進來的資料,其實是完全不會管是不是iframe,也就是如果把他當成是httpRequest.Form["Video"]時是等於就是不會驗證,什麼資料進來都不會擋

請問以webapi這樣若不想設定取消全部不驗證,有其它好的方法嗎

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答