asp.net安全
脚本注入
若要避免脚本注入攻击,请遵循以下准则:
-
采用 HtmlEncode 方法对用户输入进行编码,该方法可将 HTML 转换为文本表示形式(例如,将 <b> 转换为 <b>),这有助于防止在浏览器中执行标记。
-
在使用参数对象将用户输入传递给查询时,可以为数据源控件的预查询事件添加处理程序并在这些事件中进行编码。例如,如果处理 SqlDataSource 控件的 Inserting 事件,可以在该事件中,在执行查询之前对参数值进行编码。
-
如果正在使用带绑定字段的 GridView 控件,则可将 BoundField 对象的 HtmlEncode 属性设置为 true。这会使 GridView 控件在行处于编辑模式下时对用户输入进行编码。
-
对于可以进入编辑模式的控件,建议您使用模板。例如,GridView、DetailsView、FormView、DataList 和 Login 控件可以显示可编辑的文本框。但是,除 GridView 控件之外(请参见上一条),这些控件不会自动验证用户输入或对用户输入进行 HTML 编码。因此,建议您为这些控件创建模板,在模板中包括输入控件(例如 TextBox 控件)并添加验证控件。此外,在提取控件的值时,应对其进行编码。
SQL 注入
若要避免 SQL 注入攻击,请遵循以下准则:
-
不要通过将字符串(尤其是那些包括了用户输入的字符串)串联在一起来创建 SQL 命令,而应当使用参数化查询或存储过程。
-
如果要创建参数化查询,则可使用参数对象来建立参数的值。有关详细信息,请参见对 SqlDataSource 控件使用参数和对数据源控件使用参数。