我有一个用传统的ASP编写的表单,有一些轻客户端验证。除了一件事以外,一切都很好 - 当有撇号时,表单失败。其中一个字段可能经常有撇号(例如,如果用户的姓氏是O'Brien,则姓氏字段将失败)。窗体 - 需要允许为撇号
我该如何解决这个问题?
我有一个用传统的ASP编写的表单,有一些轻客户端验证。除了一件事以外,一切都很好 - 当有撇号时,表单失败。其中一个字段可能经常有撇号(例如,如果用户的姓氏是O'Brien,则姓氏字段将失败)。窗体 - 需要允许为撇号
我该如何解决这个问题?
您必须检查您的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);
非常感谢!在输入字段到数据库之前,我最终创建了一个删除撇号的函数..(在我看到您的答案之前)。我也会测试一下,看看我是否可以实现它,因为我一直在努力学习。非常感谢你的帮助! – 2013-05-08 20:08:58
以何种方式失败?您是否看到错误消息,或者(更可能)您有[SQL注入](http://bobby-tables.com/)问题? – 2013-05-08 19:32:28
我在输入数据到数据库的页面上得到http 500错误 - 我禁用了http友好错误,但仍然得到了这个。我认为这是SQL注入问题,只是不知道如何解决这个问题。 – 2013-05-08 19:34:06
作为FYI ..我有点熟悉替换(request.form(“LName”),“'”,“''”),但不确定如何实现它...没有找到任何地方的例子。 – 2013-05-08 19:37:06