鍍金池/ 問答/PHP  Python  Linux/ 數(shù)據(jù)修改的post改寫

數(shù)據(jù)修改的post改寫

最近學(xué)習(xí)csrf攻擊看到,get方式修改數(shù)據(jù)是非常不安全的.所以想把所有的數(shù)據(jù)修改方式改成post方式.
以往的thinkphp中列表頁,先獲取后臺數(shù)據(jù),然后foreach 循環(huán)到前臺頁面中
樣式:圖片描述
代碼:

 <?php foreach ($data as $k => $v): ?>            
            <tr class="tron">
                <td><?php echo $v['uname']; ?></td>
                <td><?php echo $v['password']; ?></td>
                <td><?php echo $v['role_name'] ?></td>
                <td align="center">
                    <a href="<?php echo U('edit?id='.$v['id']); ?>" title="編輯">編輯</a> |
                    <?php if ($v['id']>1): ?>
                        <a href="<?php echo U('delete?id='.$v['id']); ?>" onclick="return confirm('確定要刪除嗎?');" title="移除">移除</a>
                    <?php endif ?>
 
                </td>
            </tr>
        <?php endforeach; ?> 
        

現(xiàn)在怎么才能把它改寫成post 方式了?
每條列表做個(gè)form? 然后如何在表單加入csrf的隨機(jī)數(shù)了,每一條做一個(gè)隨機(jī)數(shù)?

回答
編輯回答
伐木累

一個(gè)form只需一個(gè)hidden input 存放scrf隨機(jī)數(shù),每次載入form 或提交失敗後都會讀取新的scrf隨機(jī)數(shù)放入這個(gè)input,而這個(gè)scrf隨機(jī)數(shù)應(yīng)交由你的框架生成(當(dāng)然你自己創(chuàng)造一個(gè)生成器也行)。方便的做法是每次載入form或提交失敗時(shí)用ajax取得這個(gè)scrf然後放入input,確保每次提交時(shí)都是正確的scrf隨機(jī)數(shù)。

*這個(gè)scrf應(yīng)該有時(shí)效性,比如設(shè)置成7000,就代表從提交form一刻數(shù)7秒,如超過7秒仍未提交成功則scrf隨機(jī)數(shù)會過期,form提交失敗。

2017年4月28日 11:59
編輯回答
忠妾

列表頁需要提交什么東西嗎?不就是數(shù)據(jù)的展示么

form表單可以包在外面,一次性提交多個(gè);也可以用ajax來post。

csrf的隨機(jī)數(shù)不需要一條一個(gè);當(dāng)前這個(gè)post提交帶上一條來進(jìn)行驗(yàn)證就好

2017年3月14日 13:30
編輯回答
雅痞

怎么把上面列表的編輯、刪除改成post方式,這樣做的意義大嗎?

2018年8月12日 14:47
編輯回答
蟲児飛
同意一樓的說法.
2017年12月28日 20:54