一般网站用户和管理员用户权限在数据库当中要严格的分开
如果普通用户嵌入在查询另一DROP TABLE语句,是否允许它在数据库中执行?由于报表相关的基本对象数据库是可以看到的,用户必须有权限操作数据库。在设计上,没有必要给予最高权限的用户,赋值于网站的创建和删除数据库对象的权限。然后,即使他们使用恶意代码植入SQL代码语句,因为他们的用户权限较小,代码将不会被执行。
当设计一个网站来强制使用参数化的语句,如果这些变量编写SQL语句由用户输入不直接植入到语句,但传递变量参数的时候,可以有效防止SQL注入攻击,换句话说SQL注入攻击,用户的输入不能被直接植入到SQL语句来代替,你必须过滤的前端的用户get,post输入,或用户输入的参数可伪造的语句进行拦截。参数进行限制,而不是用户随意的输入变量以这种方式植入到SQL语句中,大多数的SQL注入攻击可以防御了。不幸的是,支持参数数据库引擎的并不多。然而,在产品的开发,数据库工程师应尽量使用参数化的语句。
更频繁地使用安全参数包括mysql数据库
为了减少数据库服务器上注入攻击的不利影响,服务器数据库专门设计的比较安全的SQL语句参数。在数据库设计过程中,工程师应尽量以标准的SQL语句来使用这些参数并防止恶意代码注入攻击。
如果在数据库中的一组参数集,被提供给类型检查和验证长度参数集时使用,用户输入的参数值,将被视为字符值,而不是一个可执行代码。即使用户输入包含可执行的恶意SQL注入代码,数据库也会将其过滤掉,因为数据库只被视为正常字符。使用一组,可以强制执行类型和长度检查参数的另外一个优点,数值在该范围之外,将触发异常提示,如果用户输入的值不符合指定的类型和长度的限制,和报告发生异常的描述一样,如果定义的数据类型的数目是字符串类型,长度为10个字符,虽然用户输入的内容是字符类型数据,但长度最多为20个字符由于内容长度超过限制由数据库字段长度的所述用户输入,所以将引发异常提示防止SQL语句的执行。
加强验证前端用户的输入以及提交
一般来说,有两种方法可以防止SQL注入攻击。首先,加强用户输入的检查和安全验证。二是强制使用参数化的SQL语句传递在mysql数据库的用户输入,也有很多的用户输入验证工具可以帮助网站的运营者来应对SQL注入攻击,以测试字符串变量的内容,并只接受拒绝将所需值输入的二进制数据,转义序列和注释字符这有助于防止SQL脚本注入一些缓冲区溢出攻击测试的大小和数据类型的用户输入,并实施相应的限制和转换。这有助于防止故意的缓冲区溢出,以防止注入攻击有明显的效果。
如何防止在多个网站端的SQL注入攻击?
在多个网站端的,由用户输入的所有数据应该被允许接收,不会由数据库来验证数据验证过程,并返回一个错误消息发送到下一阶段被拒绝之前。对于无目的的攻击者对恶意用户多层次的验证预防措施可能无效。更好的方法是验证所有网站前端的输入,例如在用户登录界面的输入,在客户端网站的验证数据可以防止简单的脚本注入攻击,但是,如果输入的参数得到了验证,任何客户端可以绕过恶意用户无限制地访问网站后台系统。因此,对于多个网站端的,同时防止SQL注入攻击,需要共同的努力,在客户端和数据库方应采取适当的安全措施,防止对网站进行SQL注入攻击,获取数据库的信息,如果不知道该如何防止SQL注入攻击也可以找专业的网站安全公司来处理。