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表示