我正在开发一个小型C#应用程序,它充当某个web协议(myprotocol://blafoobar)。因此,每当用户单击这样的web链接时,处理程序就会被Windows调用。然后它解析URI并执行某些操作。
这当然可能是一个安全风险。一种可能的攻击向量是,攻击者向用户提供恶意链接:"myprotocol://someevilstuff".然后,由于缓冲区溢出等原因,URI的解析会导致我的应用程序暴露一些意外行为(<-我不是这方面的专家(。
所以我有一堆问题:
- C#通常对缓冲区溢出等更健壮吗?(因为数组边界总是被检查的(
- C#字符串类是否相当安全(拆分等(
- 有没有一些我应该注意/避免的一般建议
C#通常对缓冲区溢出更健壮吗
这是一个很好的编写C#代码-基本上你必须一直检查分配的内存。也就是说,除非你的应用程序明确违反了信任边界(不安全的代码、对本机库的调用(,否则你是安全的。100%的可能性不大,但很多人都在努力修复那里的每一个错误。
C#字符串类是否相当安全(拆分等(?
是。
有没有一些我应该注意/避免的一般建议?
不是真正的技术层面。在逻辑层面上——使可能的攻击向量尽可能小,即不要只是删除内容等,并验证输入是否有意义。