0

我有一个用经典 ASP 编写的表单,带有一些轻量级的客户端验证。一切都很好,除了一件事 - 当有撇号时表格失败。其中一个字段可能经常带有撇号(例如,姓氏字段 - 如果用户的姓氏是 O'Brien,则表单将失败)。

我该如何解决?

4

1 回答 1

1

您必须检查您的 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);
于 2013-05-08T19:44:37.397 回答