当前位置:首页 » 编程语言 » nginx防sql注入
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

nginx防sql注入

发布时间: 2023-03-01 08:46:27

A. 如何在CentOS 6上通过YUM安装Nginx和PHP-FPM

准备篇:

1、配置防火墙,开启80端口、3306端口
vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT(允许80端口通过防火墙)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT(允许3306端口通过防火墙)
特别提示:很多网友把这两条规则添加到防火墙配置的最后一行,导致防火墙启动失败,正确的应该是添加到默认的22端口这条规则的下面
添加好之后防火墙规则如下所示:
#########################################################

#-config-firewall
#.
*filter
:INPUTACCEPT[0:0]
:FORWARDACCEPT[0:0]
:OUTPUTACCEPT[0:0]
-AINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT
-AINPUT-picmp-jACCEPT
-AINPUT-ilo-jACCEPT
-AINPUT-mstate--stateNEW-mtcp-ptcp--dport22-jACCEPT
-AINPUT-mstate--stateNEW-mtcp-ptcp--dport80-jACCEPT
-AINPUT-mstate--stateNEW-mtcp-ptcp--dport3306-jACCEPT
-AINPUT-jREJECT--reject-withicmp-host-prohibited
-AFORWARD-jREJECT--reject-withicmp-host-prohibited
COMMIT


#########################################################
/etc/init.d/iptables restart #最后重启防火墙使配置生效

2、关闭SELINUX
vi /etc/selinux/config
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
:wq 保存,关闭
shutdown -r now #重启系统

3、配置CentOS 6.2 第三方yum源(CentOS默认的标准源里没有nginx软件包)
yum install wget #安装下载工具wget

wgethttp://www.atomicorp.com/installers/atomic

#下载atomic yum源
sh ./atomic #安装
yum check-update #更新yum软件包
################################################################
安装篇:

一、安装nginx
yum install nginx #安装nginx,根据提示,输入Y安装即可成功安装
service nginx start #启动
chkconfig nginx on #设为开机启动
/etc/init.d/nginx restart #重启
rm -rf /usr/share/nginx/html/* #删除ngin默认测试页

二、安装Mysql
1、安装mysql

yum install mysql mysql-server #询问是否要安装,输入Y即可自动安装,直到安装完成
/etc/init.d/mysqld start #启动MySQL
chkconfig mysqld on #设为开机启动
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf #拷贝配置文件(注意:如果/etc目录下面默认有一个my.cnf,直接覆盖即可)
shutdown -r now #重启系统

2、为root账户设置密码
mysql_secure_installation
回车,根据提示输入Y
输入2次密码,回车
根据提示一路输入Y
最后出现:Thanks for using MySQL!

MySql密码设置完成,重新启动 MySQL:
/etc/init.d/mysqld stop #停止
/etc/init.d/mysqld start #启动
service mysqld restart #重启

三、安装PHP
1、安装PHP
yum install php #根据提示输入Y直到安装完成
2、安装PHP组件,使PHP支持 MySQL、PHP支持FastCGI模式

yuminstallphp-mysqlphp-gdlibjpeg*php-imapphp-ldapphp-odbcphp-pearphp-xmlphp-xmlrpcphp-mbstringphp-mcryptphp-bcmathphp-mhashlibmcryptlibmcrypt-develphp-fpm

#根据提示输入Y回车
/etc/init.d/mysqld restart #重启MySql
/etc/init.d/nginx restart #重启nginx
/etc/rc.d/init.d/php-fpm start #启动php-fpm
chkconfig php-fpm on #设置开机启动
################################################################
配置篇

一、配置nginx支持php
cp /etc/nginx/nginx.conf /etc/nginx/nginx.confbak #备份原有配置文件
vi /etc/nginx/nginx.conf #编辑
user nginx nginx;#修改nginx运行账号为:nginx组的nginx用户
:wq! #保存退出

cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.confbak #备份原有配置文件
vi /etc/nginx/conf.d/default.conf #编辑

index index.php index.html index.htm;#增加index.php

#.0.0.1:9000
#
location~.php${
roothtml;
fastcgi_pass127.0.0.1:9000;
fastcgi_indexindex.php;
fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;
includefastcgi_params;
}


#取消FastCGI server部分location的注释,并要注意fastcgi_param行的参数,改为$document_root$fastcgi_script_name,或者使用绝对路径

二、配置php

vi /etc/php.ini #编辑

date.timezone = PRC #在946行 把前面的分号去掉,改为date.timezone = PRC

disable_functions=passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname


#在386行 列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。
expose_php = Off #在432行 禁止显示php版本的信息
magic_quotes_gpc = On #在745行 打开magic_quotes_gpc来防止SQL注入
open_basedir = .:/tmp/ #在380行,设置表示允许访问当前目录(即PHP脚本文件所在之目录)和/tmp/目录,可以防止php木马跨站,如果改了之后安装程序有问题,可注销此行,或者直接写上程序目录路径/var/www/html/www.osyunwei.com/:/tmp/
:wq! #保存退出

三、配置php-fpm

cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.confbak #备份原有配置文件
vi /etc/php-fpm.d/www.conf #编辑
user = nginx #修改用户为nginx
group = nginx #修改组为nginx

/etc/init.d/mysqld restart #重启MySql
/etc/init.d/nginx restart #重启nginx
/etc/rc.d/init.d/php-fpm restart #重启php-fpm
################################################################
测试篇
cd /usr/share/nginx/html/ #进入nginx默认网站根目录
vi index.php #新建index.php文件

<?php
phpinfo();
?>


:wq! #保存

chown nginx.nginx /usr/share/nginx/html/ -R #设置目录所有者

chmod 700 /usr/share/nginx/html/ -R #设置目录权限

在客户端浏览器输入服务器IP地址,可以看到相关的配置信息!
################################################################

备注

nginx默认站点目录是:/usr/share/nginx/html/

权限设置:chown nginx.nginx /usr/share/nginx/html/ -R

MySQL数据库目录是:/var/lib/mysql

权限设置:chown mysql.mysql -R /var/lib/mysql


参考文档:http://www.osyunwei.com/archives/2353.html

B. 帝国CMS7.2评分插件SQL注入漏洞求助

1、先找出漏洞位置,到官网查看 是否有相应的补丁,并把问题提交到帝国CMS论坛里;
2、服务器上安装加密狗等安全软件;
3、找到“马”马上清除掉,禁止入侵IP 再次访问等。

C. 业务档案包括哪些

档案工作,有狭义解释和广义解释之分。从狭义上说,档案工作是指管理档案和提供档案信息为各项社会实践服务的一项专门业务。从广义上说,包括档案事业管理工作、档案室工作、档案馆工作、档案专业教育、档案科学技术研究、档案宣传出版、档案国际交往活动等。
(1)档案的收集。是档案室和档案馆接收和征集档案的总称。包括档案室对本单位归档案卷的接收,档案馆对现行机关或撤销机关移交档案的接收、对社会人士捐赠档案的接收、对分散在社会上的珍贵档案的征集。档案收集的任务,是解决档案分散状况与保管、利用档案要求合理集中的矛盾,只有“化分散为集中”,才便于保管和利用。
(2)档案的整理。是将零散文件分门别类地组成档案有机体的一项工作。包括分类、立卷、卷内文件排列、案卷封面的编制、案卷的排列、案卷目录的编制等一系列工作程序。档案整理的任务,是解决档案零散状态与保管、利用档案要求系统化的矛盾,只有“化零散为系统”,使档案由无序状态转化为有序状态,才便于保管和利用。
(3)档案的鉴定。指档案保存价值的鉴定,是鉴别档案价值的大小、确定档案保管期限、决定档案保存与销毁的一项工作。档案鉴定的任务,是解决档案的量大质杂与保管、利用档案要求优质化的矛盾,只有“化质杂为优质”,淘汰档案中的无用部分,存留其有用部分,才便于保管利用。
(4)档案的保管。是保护档案的安全、延长档案寿命的一项工作。包括档案保护技术工作和库房管理工作。档案保管的任务,是解决档案的易损性与社会要求长远保管和利用档案的矛盾,只有最大限度地增长档案原件的寿命,或者通过缩微复制保护档案信息,使之久传,才能保证社会长远利用。
(5)档案的编目。又称档案检索。是对档案内容和形式进行分析、选择、浓缩和记录,并按照一定次序编排成为各种目录的工作过程。包括馆藏目录、检索性目录和介绍性目录的编制。编目工作的任务,是解决档案数量庞大、内容复杂和利用者对档案信息特定需求之间的矛盾。各种档案目录可帮助利用者了解馆藏档案的内容和成分,检索到所需要的档案信息,也用于档案馆(室)的档案管理。
(6)档案的编研。指档案馆(室)的编辑与研究工作。包括编辑档案文献汇编、编写综合参考资料以及参加编史修志等。其主要任务是:按照一定的选题,将重要的档案编辑成为文献出版物,如档案史料汇编或丛编,重要文件汇编或政策法令汇编,以及科学技术资料汇编等;或者将档案信息浓缩化、系统化、编成大事记、组织沿革、基础数字汇编、专题概要等,便于不同利用对象的利用。
(7)档案的提供利用。亦称档案信息的输出。是通过多种信息传输渠道和媒介,将档案信息传递给利用者的工作过程。它是档案工作为各项社会实践服务的直接体现,它把档案的作用由可能性变成现实性,通过它可以把档案工作搞活,把档案这种“死材料”变成“活材料”,在各项社会实践中发挥作用。
(8)档案的统计。它以表格数字形式全面地反映档案、档案工作和档案事业状况。包括档案的收进、移出、整理、鉴定、保管、利用情况,以及档案机构、人员、经费、设备的登记和统计。档案统计是取得反馈信息、对档案工作进行监督的重要手段之一,是档案部门了解情况、总结经验、进行决策、制订计划的依据。

D. PHP的SQL漏洞修复!【中危漏洞】SQL_Injection_Vulnerability【编号:3303280】

攻击方法就在:

request:{"body":"ClassID=1+and%281%3D1%29","header":"POST /m/dianhua.asp HTTP 1.1
Content-Length: 24

/m/dianhua.asp这里,即你要修复的位置。

E. SpringBoot 防止SQL注入、XSS攻击、CSRF/CROS恶意访问

一、SQL 注入问题


SQL 注入即是指 web 应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在 web 应用程序中事先定义好的查询语句的结尾上添加额外的 SQL 语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

简单来说,就是将大部分 SQL 语句当参数传入系统中,从而获取系统中的数据。下面简单举例说明

系统中有这样一条信息 SQL 语句执行,分页查询所有用户,每页查询 20 条,并且根据指定字段进行排序,也就是说排序字段也是参数传递过来的

SQL 注入问题分析:

这样很简单的一句话 SQL,就可以把系统搞炸掉,这种方式可以实现删库跑路

以上语句会把整个 test 数据库所有内容都删掉

尽量用预编译机制,少用字符串拼接的方式传参,它是 sql 注入问题的根源。

有些特殊字符,比如:%作为 like 语句中的参数时,要对其进行转义处理。

需要对所有的异常情况进行捕获,切记接口直接返回异常信息,因为有些异常信息中包含了 sql 信息,包括:库名,表名,字段名等。攻击者拿着这些信息,就能通过 sql 注入随心所欲地攻击你的数据库了。目前比较主流的做法是,有个专门的网关服务,它统一暴露对外接口。用户请求接口时先经过它,再由它将请求转发给业务服务。这样做的好处是:能统一封装返回数据的返回体,并且如果出现异常,能返回统一的异常信息,隐藏敏感信息。此外还能做限流和权限控制。

使用 sqlMap 等待代码检测工具,它能检测 sql 注入漏洞。

需要对数据库 sql 的执行情况进行监控,有异常情况,及时邮件或短信提醒。

对生产环境的数据库建立单独的账号,只分配 DML 相关权限,且不能访问系统表。切勿在程序中直接使用管理员账号。

建立代码 review 机制,能找出部分隐藏的问题,提升代码质量。

对于不能使用预编译传参时,要么开启 druid 的 filter 防火墙,要么自己写代码逻辑过滤掉所有可能的注入关键字。

XSS 攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是 JavaScript,但实际上也可以包括 Java、 VBScript、ActiveX、 Flash 或者甚至是普通的 HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和 cookie 等各种内容。

通常情况下,被用来盗用 Cookie、破坏页面结构、重定向到其他网站等

对用户输入的表单信息进行检测过滤

CSRF - Cross-Site Request Forgery - 跨站请求伪造:

攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点,从而在未授权的情况下执行在权限保护之下的操作,CORS - Cross Origin Resourse-Sharing - 跨站资源共享,恶意访问内网敏感资源。

有效的解决办法是通过多种条件屏蔽掉非法的请求,例如 HTTP 头、参数等:

防止大规模的恶意请求,niginx 反向代理可以配置请求频率,对 ip 做限制。nginx 可以很方便地做访问控制,特别是一些偶发性的大量恶意请求,需要屏蔽处理。

屏蔽 ip 地址

屏蔽 user-agent

屏蔽代理 ip

有两种情形会需要屏蔽代理 ip:一是代理 ip 访问,二是负载均衡(real-ip 请求负载均衡服务器,再代理给后端 server)

创建 包装器,这是实现 XSS 过滤的关键,在其内重写了 getParameter,getParameterValues,getHeader 等方法,对 http 请求内的参数进行了过滤

F. nginx可以防止sql注入吗

防御原理:
1. 通过以上配置过滤基本的url中的注入关键字;
2. 当然,数据库中的用户密码得加密存放 ;
3. php程序进行二次过滤,过滤GET和POST变量中的关键字;
4. 生产环境关闭PHP和MySQL的错误信息。
SQL注入攻击一般问号后面的请求参数,在nginx用$query_string表示