2013-05-08 46 views
0

我有一个用传统的ASP编写的表单,有一些轻客户端验证。除了一件事以外,一切都很好 - 当有撇号时,表单失败。其中一个字段可能经常有撇号(例如,如果用户的姓氏是O'Brien,则姓氏字段将失败)。窗体 - 需要允许为撇号

我该如何解决这个问题?

+1

以何种方式失败?您是否看到错误消息,或者(更可能)您有[SQL注入](http://bobby-tables.com/)问题? – 2013-05-08 19:32:28

+0

我在输入数据到数据库的页面上得到http 500错误 - 我禁用了http友好错误,但仍然得到了这个。我认为这是SQL注入问题,只是不知道如何解决这个问题。 – 2013-05-08 19:34:06

+0

作为FYI ..我有点熟悉替换(request.form(“LName”),“'”,“''”),但不确定如何实现它...没有找到任何地方的例子。 – 2013-05-08 19:37:06

回答

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); 
+0

非常感谢!在输入字段到数据库之前,我最终创建了一个删除撇号的函数..(在我看到您的答案之前)。我也会测试一下,看看我是否可以实现它,因为我一直在努力学习。非常感谢你的帮助! – 2013-05-08 20:08:58