1. thinkphp怎麼做才是安全的sql防注入
注入的產生一般都是對用戶輸入的參數未做任何處理直接對條件和語句進行拼裝.
代碼舉例:
//不安全的寫法舉例1
$_GET['id']=8;//希望得到的是正整數
$data=M('Member')->where('id='.$_GET['id'])->find();
$_GET['id']='8 or status=1';//隱患:構造畸形查詢條件進行注入;
//安全的替換寫法
$data=M('Member')->where(array('id'=>$_GET['id']))->find();//使用數組方式將自動使用框架自帶的欄位類型檢測防止注入
$data=M('Member')->where(array('id'=>(int)$_GET['id']))->find();//類型約束
$data=M('Member')->where('id='.intval($_GET['id']))->find();//類型轉換
$data=M('Member')->where(array('id'=>I('get.id','','intval')))->find();//本人習慣寫法
$data=M('Member')->where(array('id'=>':id'))->bind(':id',I('get.id'))->select();//PDO驅動可以使用參數綁定
$data=M('Member')->where("id=%d",array($_GET['id']))->find();//預處理機制
//不安全的寫法舉例2
$_GET['id']=8;//希望得到的是正整數
$data=M()->query('SELECT * FROM `member` WHERE id='.$_GET['id']);//執行的SQL語句
$_GET['id']='8 UNION SELECT * FROM `member`';;//隱患:構造畸形語句進行注入;
2.防止注入的總的原則是<<根據具體業務邏輯,對來源於用戶的值的范圍,類型和正負等進行限制和判斷>>,同時<<盡量使用THINKPHP自帶的SQL函數和寫法>>.
3.在THINKPHP3.2版本中的操作步驟是:
一:在項目配置文件中添加配置: 'DEFAULT_FILTER' => 'htmlspecialchars', //默認過濾函數
二: 使用框架帶的I方法獲取來自用戶提交的數據;
例子:M('Member')->save(array('content'=>I('post.content')));這樣添加的content內容是經過htmlspecialchars處理過的.
4.為COOKIE添加httponly配置
5.最新版本的thinkphp已經支持此參數。
9.富文本過濾
富文本過濾是,XSS攻擊最令人頭疼的話題,不僅是小網站,就連BAT這樣的巨頭也是三天兩頭的被其困擾.
2. php setcookie中path和domain怎麼設置
setcookie函數原型如下:
boolsetcookie(string$name[,string$value[,int$expire=0[,string$path[,string$domain[,bool$secure=false[,bool$httponly=false]]]]]])
其中name為cookie的名字,value為cookie的值,expire為過期時間的秒級時間戳(默認為0,代表內存cookie,關閉瀏覽器即失效)
path為cookie的路徑,瀏覽器在發送cookie是只會發送對應路徑及祖先級路徑的cookie,如cookieA設置在根下,cookieB設置在/dir/下,訪問dir的請求會帶著cookieB和cookieA,但訪問根路徑的請求只會帶著cookieA
domain為cookie的域名,只能設置為當前域或當前域的上級域。例如,一個在a.b.com的頁面,可以設置domain為a.b.com,b.com,設置為a.b.com只能在a.b.com中訪問cookie,若直接設置為b.com,則可以在其他b.com域下訪問
secure為true會對cookie進行HTTPS加密傳輸
httponly為true時,只能通過請求發送cookie,使用javascript無法讀取httponly的cookie,安全性更高
3. 如何實現php的安全最大化怎樣避免sql注入漏洞和xss跨站腳本攻擊漏洞
使用php安全模式
伺服器要做好管理,賬號許可權是否合理。
假定所有用戶的輸入都是「惡意」的,防止XSS攻擊,譬如:對用戶的輸入輸出做好必要的過濾
防止CSRF,表單設置隱藏域,post一個隨機字元串到後台,可以有效防止跨站請求偽造。
文件上傳,檢查是否做好效驗,要注意上傳文件存儲目錄許可權。
防禦SQL注入。
1.使用預編譯語句
2.使用安全的存儲過程
3.檢查輸入數據的數據類型
4.從資料庫自身的角度考慮,應該使用最小許可權原則,不可使用root或dbowner的身份連接資料庫。若多個應用使用同一個資料庫,也應該為資料庫分配不同的賬戶。web應用使用的資料庫賬戶,不應該有創建自定義函數,操作本地文件的許可權。
1.假定所有用戶輸入都是「邪惡」的
2.考慮周全的正則表達式
3.為cookie設置HttpOnly,防止cookie劫持
4.外部js不一定可靠
5.出去不必要的HTML注釋
6. 針對非法的HTML代碼包括單雙引號等,使用htmlspecialchars()函數。
4. 怎麼爬取httponly
手動在瀏覽器中獲取cookie並且設置到我的爬蟲裡面 是可以進行登陸後的操作的。
在Web安全領域,跨站腳本攻擊時最為常見的一種攻擊形式,也是長久以來的一個老大難問題,而本文將向讀者介紹的是一種用以緩解這種壓力的技術,即HTTPonly cookie。
什麼是HttpOnly
如果您在cookie中設置了HttpOnly屬性,那麼通過js腳本將無法讀取到cookie信息,這樣能有效地防止XSS攻擊,目前sun公司還沒有公布相關的API,但PHPC均有實現。搞javaEE的兄弟們比較郁悶了,別急下文有變通實現。