DataList d1Function=null;
......
DataTable dtTemp=null;
try{
switch(.....)
{
.....
dtTemp=.....(這邊是呼叫預存程序去拿資料)
.....
d1Function.DataSource=dtTemp.DefaultView; //這段被掃出來想詢問一下這邊可以怎麼改,原本想說用Encoder.HtmlEncode() 但他是DataList所以不知道能怎麼改。
d1Function.DataBind();
}
}.....
<asp:DataList id="dlFunction" runat="server" RepeatColumns="2" Width="100%">
<ItemStyle BackColor="#F1F4FE" Width="50%"></ItemStyle>
<ItemTemplate>
<asp:CheckBox id="chkFunction" runat="server" style='<%# DataBinder.Eval(Container, "DataItem.FontColor","COLOR:{0};") %>' Text ='<%# DataBinder.Eval(Container, "DataItem.FunctionName") %>' Checked="false">
</asp:CheckBox>
</ItemTemplate>
</asp:DataList>
Text ='<%# DataBinder.Eval(Container, "DataItem.FunctionName") %>'
改成
Text ='<%# Microsoft.Security.Application.Encoder.HtmlEncode(DataBinder.Eval(Container, "DataItem.FunctionName").ToString()) %>'
改成這樣也是可以防止XSS沒錯吧 如果再拿去掃弱點的話他會知道我前端有用Encoder嗎
您好
這樣改可以喔
共有四種寫法可以透過
1.Server.HTMLEncode() ->傳入參數要記得是字串因此要.ToString()
實際上背後仍然是呼叫了HttpUtility.HtmlEncode
2.System.Web.HttpUtility.HtmlEncode() ->若未來要轉升到.net 5(.net core)也通用有支援
3.也可以簡寫成 <%#: %>用一個半型的冒號(:)來做html encode
=>.NET Framework 4之後才支援,由於
舊專案可能是從2.0、3.0版本轉來所以這種新型寫法較不常見
4.AntiXssEncoder.HtmlEncode()
->需額外加入參考using Microsoft.Security.Application
通常前端aspx只要你有透過Data-Bind做的
要記得補上面這些處理
有些弱掃描工具可能只認AntiXss...或者Server.HtmlEncode要測試看看