我用一个detailview显示文章,文章本身有发布选项,如果admin不选择发布,前台就不显示,我是直接用detailview数据源绑定,本来想编程控制,觉得麻烦,在sql语句读取文章的地方加了个approved,语句为select * from article where article = @article and approved= 'true',请问如果直接绑定放在页面里面安全吗?或者我把这条语句放在存储过程里面,还是编程控制?

解决方案 »

  1.   

    不太明白,LZ是为了安全吗? 那就把发布指定给admin就行,没的不给发布,是不是权限问题.如果在页面写sql代码固然不怎么好,页面中最好不要有任何直接访问数据库的内容,这样便于移值,
    还有就是如果一定要写,也要防止SQL 注入,网上很多代码,手动编程来处理这些问题,
    如果用存储过程安全性要高,而且执行速度也快,但是会有一个不好的现象就是一旦你用了这个数据库那就没办法再换数据库了,因为你是用的存储过程,
    我们现在做的项目全部用的是linq不管用什么数据库都可以,随时可以更换.
      

  2.   

    按道理没啥的,代码编译之后都生成dll文件了,也不好看到了,不过还是建议不要直接写在页面中
      

  3.   

    如果你一定要绑定在页面中也是可以的,不过写sql语句就要加防止sql注入的代码了,具体的我没有就几句话,网上找一下很多的.
      

  4.   

    文章权限是admin的,我只是不想用编程的方式再去判断,而是直接用sql去控制,感谢两位回答。ILOVE_ASPNET你说你们都用linq,我记得linq貌似只能针对sql吧,怎么样想换就换?
      

  5.   


    linq to sql只是其中一种,还有linq to objects,linq to xml等。