我有一个用经典 ASP 编写的表单,带有一些轻量级的客户端验证。一切都很好,除了一件事 - 当有撇号时表格失败。其中一个字段可能经常带有撇号(例如,姓氏字段 - 如果用户的姓氏是 O'Brien,则表单将失败)。
我该如何解决?
我有一个用经典 ASP 编写的表单,带有一些轻量级的客户端验证。一切都很好,除了一件事 - 当有撇号时表格失败。其中一个字段可能经常带有撇号(例如,姓氏字段 - 如果用户的姓氏是 O'Brien,则表单将失败)。
我该如何解决?
您必须检查您的 ASP 代码。如果您看到任何类似的代码
string SQL =
"SELECT user_id, first_name,last_name FROM users WHERE username = "
+ myUserName;
如果 myUserName 来自用户,那么您肯定很容易受到攻击。
解决方法不是尝试转义输入(即,将所有“'”替换为“''”),而是使用本文关于SQL 注入以及如何避免它的文章中概述的完全不同的方法
简而言之,从bobby-tables网站尝试以下类似操作
String username = "joe.bloggs";
SqlCommand sqlQuery = new SqlCommand(
"SELECT user_id, first_name,last_name FROM users WHERE username = ?username",
sqlConnection);
sqlQuery.Parameters.AddWithValue("?username", username);