防止SQL注入
我需要保护SQL注入的应用程序。 应用程序正在使用ADO连接到Oracle,并搜索用户名和密码以进行身份验证。
从我读到现在,最好的方法是使用参数,而不是将整个SQL分配为字符串。 像这样的东西:
query.SQL.Text := 'select * from table_name where name=:Name and id=:ID';
query.Prepare;
query.ParamByName( 'Name' ).AsString := name;
query.ParamByName( 'ID' ).AsInteger := id;
query.Open;
另外,我正在考虑验证来自用户的输入,并删除SQL关键字,如删除,插入,选择等...任何不同于正常ASCII字母和数字的输入字符都将被删除。
这会保证我的安全级别最低?
我不想使用除Delphi 7标准和Jedi之外的任何其他组件。
这会保证我的安全级别最低?
是的参数化查询应该可以保护您免受SQL注入的攻击,这将很容易测试。 只需在name
变量中输入一些危险的字符串,看看会发生什么。 通常你应该返回0行而不是错误。
上一篇: prevent against SQL injection
下一篇: php