Mar*_*ark 5 c# sql asp.net sql-injection
对于用户在文本框中输入的电子邮件,我正在进行客户端检查,以查找电子邮件是否有效
string emailexist = "SELECT COUNT(DISTINCT UserID) as count FROM tbl_user WHERE Email=@Email ";
<asp:RegularExpressionValidator ID="RegularExpressionValidator2" ValidationGroup="Login" ControlToValidate="txtUserName"
ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" CssClass="Error"
runat="server" />
Run Code Online (Sandbox Code Playgroud)
这个正则表达式是否足以阻止SQL注入电子邮件.
其他文字:
string groupExistQuery = "SELECT COUNT(DISTINCT GroupID) as count FROM tbl_group WHERE GroupName=@GroupName";
Run Code Online (Sandbox Code Playgroud)
我在服务器端进行查询,检查用户输入的组名是否已在数据库中可用,这里很有可能执行sql注入.我应该如何防止它.
正则表达式与 SQL注入无关(黑名单等从来不是最强的方法); 然而,使用的参数的@Email装置(假设它仍然参数化),其不容易受到SQL注入.
SQL注入涉及不恰当的连接串联; 打击它的主要工具是参数,这已经发生在这里.
例如,如果您这样做:
var sql = "SELECT ...snip... WHERE Email='" + email + "'"; // BAD!!!!!
Run Code Online (Sandbox Code Playgroud)
那么它很容易受到SQL注入的影响.通过使用参数,该值不会被视为查询的一部分,因此攻击者没有攻击向量.
| 归档时间: |
|
| 查看次数: |
1726 次 |
| 最近记录: |