小编Yve*_* M.的帖子

这种基于LINQ的搜索是否可以安全地防止SQL注入/ XSS攻击?

请参考以下数据库搜索教程,并建议搜索方法是否安全,特别是因为它从文本框中获取输入.

http://net.tutsplus.com/tutorials/asp-net/enabling-search-functionality-in-your-site-using-the-new-features-in-aspnet-35/

Protected Sub btnSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSubmit.Click  

    Dim db As New BlogDBDataContext()  

    Dim q = From b In db.Blogs _  
            Where b.BlogContents.Contains(txtSearch.Text.Trim()) Or _  
                  b.BlogTitle.Contains(txtSearch.Text.Trim()) _  
            Select b  

    lv.DataSource = q  
    lv.DataBind()
End Sub  
Run Code Online (Sandbox Code Playgroud)

sql linq asp.net security code-injection

5
推荐指数
1
解决办法
439
查看次数

为什么会发生这种单身行为?

我的一个初级程序员创建了一个单身人士,但它表现得很奇怪:

我知道你不应该访问这样的对象,但是他们是这样做的,我无法解释为什么会发生这种情况 - 在调用remove实例之后,我在该行上放了一个断点,我仍然可以访问someObject对象及其属性.这种方式有意义,因为您访问mySingleton对象的引用,而不是myInstance,...正如您所看到的,我无法清楚地解释它,任何人都可以帮忙吗?

例如

    Dim x As MySingleton = MySingleton.GetInstance()

    x.someObject.int = 5
    x.someObject.str = "hello"

    Console.Out.WriteLine(x.someObject.int.ToString)
    Console.Out.WriteLine(x.someObject.str.ToString)

    MySingleton.RemoveInstance()

    Console.Out.WriteLine(x.someObject.int.ToString) //still exists!
    Console.Out.WriteLine(x.someObject.str.ToString) //still exists!
Run Code Online (Sandbox Code Playgroud)

这是单身人士的Psuedo代码:

Public Class MySingleton

    Private Shared _myInstance As MySingleton

    Public someObject As New Class1

    Public Shared Function GetInstance() As MySingleton
        If _myInstance Is Nothing Then
            _myInstance = New MySingleton
        End If
        Return _myInstance

    End Function

    Public Shared Sub RemoveInstance()
        _myInstance = Nothing
    End Sub


    End Class
Run Code Online (Sandbox Code Playgroud)

就个人而言,我不会像这样编写单例 - 我将实例对象作为一个单独的类.但每个人都是自己的.

.net language-agnostic vb.net design-patterns

3
推荐指数
1
解决办法
101
查看次数