![]() |
1
3
你说得对。这个
这个
|
![]() |
2
3
是的,这里准备的语句将阻止SQL注入。这是因为您使用的是占位符(?)在查询中。这是一个重要的占位符。 以下是准备好的陈述的两个例子。第一个不会阻止SQL注入。 PreparedStatement ps=conn.PrepareStatement(“从名字类似“+名字”的用户中选择*); 上面的语句即使是准备好的语句也不会阻止SQL注入 但是,下面准备的语句可以很好地防止SQL注入。 PreparedStatement ps=conn.PrepareStatement(“select*from users where firstname like?”); 第一条和第二条语句的区别在于,虽然第一种情况下的查询是在运行时动态编译的,但第二种情况下是预编译的。 这意味着像(a'或'1'='1)这样的恶意用户输入可以更改第一条语句中的查询。但是,第二个查询(因为它是预编译的)将把恶意用户输入视为数据而不是SQL命令。 简而言之,prepred语句仅在与占位符和绑定参数一起使用时才防止SQL注入。 |
![]() |
3
1
仅仅准备好的语句就足以防止SQL注入…
但是,如果您打算将用户消息写入“out”参数(例如
|
![]() |
4
1
它似乎可以防止SQL注入。当然,您正确地认为allowed()函数有帮助,但它不是首选的方法。由于您的代码只是一个示例,我假设在现实世界中,大多数程序都允许5个以上的选项。 |
![]() |
Farid · 限制django每个客户的访问 2 年前 |
![]() |
josegp · 在Nmap中-p-tag是什么意思 2 年前 |
![]() |
kramer65 · 如何根据网站用户在S3上添加非公共网站文件? 6 年前 |
|
derf26 · 如何阻止React Web包包含包中的脚本。json 6 年前 |
|
user8663960 · 最好也是最简单的方法是保护登录表单的安全 6 年前 |