我有一个用经典ASP编写的表单,有一些轻量级的客户端验证。一切都运作良好,除了一件事 - 当有撇号时表格失败。其中一个字段可能经常有撇号(例如,如果用户的姓氏是O'Brien,则姓氏字段 - 表单会失败。)
我该如何解决这个问题?
答案 0 :(得分:1)
您必须检查自己的ASP代码。如果您看到任何类似
的代码string SQL =
"SELECT user_id, first_name,last_name FROM users WHERE username = "
+ myUserName;
myUserName来自用户,那么你肯定很脆弱。
修复不是试图逃避输入(即用'''替换所有“'”),而是使用完全不同的方法,如本文SQL Injection and how to avoid it
中所述。简而言之,请尝试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);