本来是打算做一个web版本的sql server管理器,方便远程操作数据库。
上线后发现,输入某些sql语句例如"union sleect",提交后网站呈404。
调试后发现,这与执行sql语句的库无关,只要这些特殊字符串进入后台,网站就无法显示。在本地局域网内测试是没这个问题的,部署到服务器上,再用外网访问就这样。猜测是IIS的安全机制问题,但是不知道在哪里设置,网上也找不到类似的问题。
想问问大神知道怎么回事吗?
需要源码的话也可以提供的。

解决方案 »

  1.   

    union sleect 是不是中间空格引起的,有url编码吗,404的话,你可以在服务器上登录页面,测试下。看下报错信息是什么。
      

  2.   

    嗯,关键是先查出在哪一步被拦截了,网关层、nginx、还是IIS?
    你先确认下是不是没有编码,比如 HttpUtility.HtmlEncode("union select")
      

  3.   

    如果是我的话,我会把 所有的SQL语句 加密传输到后台,后台解密 然后在连接SQL 查询 or otherthing 。我觉得 这应该是一种基本的操作。
      

  4.   

    是不是你们网站引用了某种杀逼式”防SQL注入”代码库?
      

  5.   

    前端拼接SQL语句的做法是非常不明智的
    这种问题大家给不了你很好的答案,还是需要你自己去找,不过你前端拼接SQL语句的做法是应该考虑一下是否需要换换
      

  6.   

    前端拼接sql语句? 不建议这种做法   很不安全啊 大兄弟
      

  7.   

    估计是你的后台在抛错的时候,不是抛出500的错误,而是自定义为404了。比如说:你输入的union sleect,应当是union select吧?这个sleect不被SQL语句支持,从而后台抛错,而后台代码在截获这个错误后,抛出Status为404