【web安全】sql注入漏洞如何避免

2021-02-02 16:45发布

2条回答

开启配置文件中的magic_quotes_gpc和magic_quotes_runtime设置

执行sql语句时使用addslashes进行sql语句转换 

Sql语句书写尽量不要省略小引号和单引号 

过滤掉sql语句中的一些关键字:update、insert、delete、select、* 

提高数据库表和字段的命名技巧,对一些重要的字段根据程序的特点命名,取不易被猜到的。 

Php配置文件中设置register_globals为off,关闭全局变量注册 

控制错误信息,不要再浏览器上输出错误信息,将错误信息写到日志文件中。

过滤掉一些常见的数据库操作关键字:select,insert,update,delete,and,*等或者通过系统函数:addslashes(需要被过滤的内容)来进行过滤。 

在PHP配置文件中Register_globals=off;设置为关闭状态 //作用将注册全局变量关闭。比如:接收POST表单的值使用$_POST['user'],如果将register_globals=on;直接使用$user可以接收表单的值。 

SQL语句书写的时候尽量不要省略小引号(tab键上面那个)和单引号 

提高数据库命名技巧,对于一些重要的字段根据程序的特点命名,取不易被猜到的 

对于常用的方法加以封装,避免直接暴漏SQL语句 

开启PHP安全模式Safe_mode=on; 

打开magic_quotes_gpc来防止SQL注入 Magic_quotes_gpc=off;默认是关闭的,它打开后将自动把用户提交的sql语句的查询进行转换,把'转为\',这对防止sql注入有重大作用。因此开启:magic_quotes_gpc=on; 

控制错误信息关闭错误提示信息,将错误信息写到系统日志。

使用mysqli或pdo预处理。


征戰撩四汸
3楼 · 2021-12-12 15:25

1.严格区分用户权限

在权限设计中,针对软件用户,没有必要给予数据库的创建、删除等管理权限。这样即便在用户输入的SQL语句种含有内嵌式的恶意程序,因为其权限的限定,也不可能执行。所以程序在权限设计时,最好把管理员与用户区别起来。这样能够最大限度的降低注入式攻击对数据库产生的损害。

2.强制参数化语句

在设计数据库时,如果用户输入的数据并不直接内嵌到SQL语句中,而通过参数来进行传输的话,那麼就可以合理的预防SQL注入式攻击。

运用这种方法能够避免绝大多数的SQL注入攻击。遗憾的是,如今适用参数化语句的数据库引擎并不多,但是数据库工程师在开发时要尽可能选用参数化设计语句。

3.检验用户输入的信息

在SQL Server数据库中,有比较多的输入內容检验工具,能够协助管理人员来应对SQL注入式攻击:检测字符串的內容,只接纳需要的值;

拒绝包括二进制、转义序列和注释內容,这有利于预防脚本注入。

检测输入内容的大小和数据类型,强制执行适度的限定与变换,这有利于避免缓冲区溢出。

4.利用专业的漏洞扫描工具

应用专业的漏洞扫描工具,能够协助管理人员来找寻有可能被SQL注入攻击的点。凭着专用工具,管理人员可以快速发觉SQL注入的漏洞,并采用积极主动的对策来预防SQL注入式攻击。

5.利用陷阱账户

可以设定两个账户,即管理员账户和防注入账户。将防注入的账户伪装成管理员账户,如将名称设置为admin,让检测软件产生错觉,在密码方面,可以设置成超长的中文字符(几千字),让攻击者的漏洞检测软件达到高负荷状态直至资源耗尽。


相关问题推荐

  • 回答 6

    这个还是因人而异吧,看你自己对哪方面感兴趣,兴趣是最好的老师,感兴趣了才愿意钻研学习下去,简单说一下这两个学习知识方面的不同吧:软件测试岗位虽然对于从业者的知识基础要求不高,但是软件测试岗位所涉及到的知识面还是比较广的,所以软件测试人员也需...

  • 回答 5

    SQL注入漏洞的危害:1、数据库中存储的用户隐私信息泄漏;2、通过操作数据库对某些网页进行篡改;3、修改数据库一些字段的值,嵌入网马链接,进行挂马攻击;4、数据库服务器被恶意操作,系统管理员帐户被窜改;5、数据库服务器提供的操作系统支持,让黑客得以...

  • 回答 16

    一、CISP(Certified Information Security Professional)证书中文叫注册信息安全专业人员,由中国信息安全产品测评认证中心实施的国家认证。可以说,这是目前国内对于个人来说认可度最高的信息安全人员资质,堪称最权威、最专业、最系统。根据实际岗位的不...

  • 回答 14

    渗透测试(也称为pentest)是测试移动应用程序漏洞的过程。此测试的主要目的是确保外部人员的重要数据.通过模拟黑客的思维和攻击手段,对计算机业务系统的弱点、技术缺陷和漏洞进行探查评估。经过客户授权后,在不影响业务系统正常运行的条件下,渗透人员在黑...

  • 回答 1

    网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。主要涉及到的有:1、物理措施:例如,保护网络关键设备(如交换机、大型计算机等),制定严格的网络...

  • 回答 33

      网络安全工程师学习内容:  1、计算机应用、计算机网络、通信、信息安全等相关专业本科学历,三年以上网络安全领域工作经验;  2、精通网络安全技术:包括端口、服务漏洞扫描、程序漏洞分析检测、权限管理、入侵和攻击分析追踪、网站渗透、病毒木马防...

  • 回答 26

      学历不是问题,技术才是硬道理!只要你的技术过硬的话,你完全可以进国家安全部门去工作的。比如公安局里的网监工作,大都是九零后的电脑方面的精英。未必都是本科生。还有从社会上特招进去的。所以说,现在是拿技术说话,不是靠学历吃饭的时代了。  网...

  • 回答 16

    网络安全的知识是比较简单的,比较好入门,好多知识理论,大家都是可以听懂的,这是完全没有问题的。网络安全最终的则是实战的应用,怎么把这些理论知识运用到事件中,这些才是重中之重。所以在选择培训机构的时候,也需要尽量去找这些实践操作多的培训机构。...

  • 回答 22

      能够胜任的岗位主要有:渗透测试工程师、大数据安全工程师、信息安全工程师、安全测试工程师、安全服务工程师、安全运维工程师、系统安全工程师、服务器安全工程师、云计算安全工程师、网络安全工程师、安全分析师、渗透讲师等;  按照web渗透、内网渗透...

  • 回答 23

    一些典型的网络安全问题,可以来梳理一下:IP安全:主要的攻击方式有被动攻击的网络窃听,主动攻击的IP欺骗(copy报文伪造、篡改)和路由攻击(中间人攻击);2. DNS安全:这个大家应该比较熟悉,修改DNS的映射表,误导用户的访问流量;3. DoS攻击:单一攻击...

  • 回答 19

    运维一般是设备或者环境的搭建和维护,网络安全可以看做是防火墙

  • 回答 12

    先说说运维工程师和网络工程师的区别。运维工程师是泛指,网络工程师为特指,所以不能这么对比。你应该这么理解,网络工程师是一个人(也可以是理解成一个岗位),而运维则是他的工作内容。从工作内容上来说,运维可细分为桌面运维、网络运维、服务器运维三大...

没有解决我的问题,去提问