請教
我使用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這樣若不想設定取消全部不驗證,有其它好的方法嗎