使用变量处理字符串sql查询中的单引号

时间:2012-10-08 13:51:35

标签: javascript sql sql-server sql-injection

我试图通过插入特殊字符使这个语句安全。如何重新格式化查询以处理此问题,例如具有值“Women's”的变量类型?我知道参数化查询是可行的方法;现在不是一个选择。

var sqlStatement = "SELECT DISTINCT DN FROM tbl1 WHERE Media LIKE "+ media + "% AND Type = " + type + "";

2 个答案:

答案 0 :(得分:1)

这里你最好的资源是OWASP(查看SQL Injection Prevention备忘单)。我不得不重申,您最好的选择是按以下顺序尝试解决方案:

  1. 准备好的陈述
  2. 存储过程
  3. 转义用户提供的输入
  4. 如果您完全设置了对SQL Server的转义查询,可以参考This MSDN Article,特别是转义输入部分。如果您可以通过实施White List进一步验证用户输入,那就更好了!

答案 1 :(得分:0)

  

我知道参数化查询是可行的方法;那是   现在不是一个选择。

为什么“现在不是一个选择”?

您的整个数据是否已被妥协或销毁“现在是一个选项”?您是否愿意发布您的网址?

如果不对查询进行参数化,则无法保证防止SQL注入的万无一失的方法。