作者bbcust (bbcust)
看板Web_Design
标题Re: [问题] 如何防止SQL注入漏洞程式
时间Thu Oct 8 11:32:56 2015
※ 引述《wa007123456 (大笨羊)》之铭言:
: 大家都知道 SQL注入是骇客web攻击常见的方法之一
: 如果今天用C#来实作
: 要怎麽防止POST和GET有恶意字元?
: 我唯一想到的头绪是Global.asax
: 但是不知如何实作
: 感谢各位先辈
常见的有几个方法,其实推文大致上都说了
1.LinQ to SQL
https://msdn.microsoft.com/zh-tw/library/bb386295(v=vs.110).aspx
看名称就知道是用LinQ语法来操作SQL
不过简单的CRUD还ok,如果是相当复杂的操作,就不是太好使用
2.ADO.NET Entity Framework (ADO.NET EF)
这文章相当多,如果对 SQL 不是很擅长的话,是一个很好的方法
透过 Mapping Objects to Data 来操作 DB
另外也有 LinQ to Entity 可以一起使用
对不习惯写 SQL 的人是很好的一种做法
3.Sql Parameters
https://msdn.microsoft.com/en-us/library/system.data.sqlclient.
sqlcommand.parameters(v=vs.110).aspx
缩址:
https://goo.gl/LuhTLc
透过 parameter 的方式来传递参数
值得注意的是 parameter 只能用在条件式的条件
如果要动态的改变查询的 column 或 table 等是无法用 parameter 来传递的
此时可以合并使用第四种方法
4.先在程式中转换,再组合成 Sql Command Text
简单来说就是先用程式转换过一次(if else 或 switch 等等)
http://ideone.com/g85kLi
如果你习惯写SQL的话,3+4是不错的方法
对 SQL 比较不熟悉的话,使用ADO.NET EF也是很好的一种方法
已经一阵子没写C#了,这些是以前我会使用的方法,让你参考一下
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.135.150.144
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Web_Design/M.1444275186.A.1AE.html