周末爆出来好多瓜,都无心学习了,想想躺在床上,度过2天周末,那是一件多么愉快的事儿,只可惜,现实它不许可啊,我现在的想法便是快速结束PHP的入门学习,然后过渡到web前端学习,末了开拓一个娱乐靶场,类似冲顶大会那样,10道题,答对给褒奖~

如何只花1元搭建个人博客网站

作者 ailx10

php防sql注入代码PHP数据库防SQL注入 Ruby

一、连接数据库 hack首先在mysql中,创建一个空的数据库 hack剩下的操作交给PHP

ailx10

10w+ 次咨询

知乎网络安全精良回答者

网络安全硕士

去咨询

通过PDO工具可以轻松的实现数据库的连接~第一个参数:指天命据库主机和数据库名字第二个参数:指定上岸用户名第三个参数:指定上岸密码

<?phptry { $db = new PDO(&#34;mysql:hosr=127.0.0.1;dbname=hack", "root", ""); print "数据库连接成功~";}catch (PDOException $e) { print "数据库连接失落败,由于:" . $e->getMessage();}二、PHP创建表

假设我们要开一个培训班,我们创建一个黑客学习项目表,里面有5个字段~

id 主键 整数subject 科目 字符串price 价格 小数is_ffm 会员免费 整数add_time 上架韶光 日期

最好设置一下主键自增~这样更加方便插入数据~

代码写的有点挫

<?phptry { $db = new PDO("mysql:host=127.0.0.1;dbname=hack", "root", ""); print "数据库连接成功~"; try { $q = $db->exec("create table study( id INTEGER PRIMARY KEY, subject VARCHAR (255), price DECIMAL (4,2), is_ffm INT, add_time DATE )"); print "创建表 study 成功~"; }catch (PDOException $e){ print "创建表失落败,由于:" . $e->getMessage(); }}catch (PDOException $e) { print "数据库连接失落败,由于:" . $e->getMessage();}三、把数据存入数据库

我们开始添加黑客学习科目

【网络安全】TCP-IP协议攻击

作者 ailx10

web安全入门,9块9,会员免费内网安全入门,9块9,收费课程ctf 6项全能入门,19块9,会员免费

<?phptry { $db = new PDO("mysql:host=127.0.0.1;dbname=hack", "root", ""); print "数据库连接成功~\n"; $insert_data_0 = "insert into study(id,subject,price,is_ffm,add_time) values (0,'web安全入门',9.90,1,now())"; $insert_data_1 = "insert into study(id,subject,price,is_ffm,add_time) values (1,'内网安全入门',9.90,0,now())"; $insert_data_2 = "insert into study(id,subject,price,is_ffm,add_time) values (2,'ctf 6项全能入门',19.90,1,now())"; $res = $db->exec($insert_data_0); $res &= $db->exec($insert_data_1); $res &= $db->exec($insert_data_2); if(false === $res) { print "数据插入失落败\n"; }else{ print "数据插入成功\n"; } $que = $db->query('select from study'); while($row = $que->fetch()){ print "$row[id],$row[subject],$row[price],$row[is_ffm],$row[add_time]\n"; }}catch (PDOException $e) { print "数据库连接失落败,由于:" . $e->getMessage();}四、安全的向MySQL数据库中插入数据通过?问号站位

$insert_data_0 = $db->prepare("insert into study (subject,price,is_ffm,add_time) values ((?),9.90,1,now())");通过字符串进行补位

$res = $insert_data_0->execute(array('web安全入门666'));这样用户输入的数据,就不会对原始的SQL语句构造产生影响,担保无法进行SQL注入~要不然,黑客直接SQL注入,把全体数据库给灭掉~听懂的给个掌声~

【Web安全】SQL注入攻击戒备

作者 ailx10

<?phptry { $db = new PDO("mysql:host=127.0.0.1;dbname=hack", "root", ""); print "数据库连接成功~<br>"; $insert_data_0 = $db->prepare("insert into study (subject,price,is_ffm,add_time) values ((?),9.90,1,now())"); $insert_data_1 = $db->prepare("insert into study (subject,price,is_ffm,add_time) values ((?),9.90,0,now())"); $insert_data_2 = $db->prepare("insert into study (subject,price,is_ffm,add_time) values ((?),19.90,1,now())"); $res = $insert_data_0->execute(array('web安全入门666')); $res &= $insert_data_1->execute(array("内网安全入门666")); $res &= $insert_data_1->execute(array("CTF入门666666")); if(false === $res) { print "数据插入失落败<br>"; }else{ print "数据插入成功<br>"; } $que = $db->query('select from study'); while($row = $que->fetch()){ print "$row[id],$row[subject],$row[price],$row[is_ffm],$row[add_time]<br>"; }}catch (PDOException $e) { print "数据库连接失落败,由于:" . $e->getMessage();}?>五、从数据库中读取数据

在上面一节中,我们已经提前体验了查询

$db->query('select from study');

通过fetch()方法返回查询中的下一行

$row=$que->fetch()

如果行不多的话,也可以通过fetchAll()方法,一把撸~

$que = $db->query('select from study'); $rows = $que->fetchAll(); foreach ($rows as $row) { print "$row[id],$row[subject],$row[price],$row[is_ffm],$row[add_time]<br>"; }

六、如何安全的查询安全的查询所有web安全课程~通过$db->prepare和$que->execute可以防止SQL注入攻击~_下划线:匹配一个字符%百分号:匹配任意多个字符串你又学会了MySQL的LIKE模糊匹配语句~但是这样的做法,会使得通配符在查询中起浸染~

WEB安全攻防入门

作者 ailx10

$que = $db->prepare('select from study where subject like ?'); $que->execute(array("web安全%")); $rows = $que->fetchALl(); foreach ($rows as $row) { print "$row[id],$row[subject],$row[price],$row[is_ffm],$row[add_time]<br>"; }如果不想使通配符生效可以通过quote方法和strtr方法这样做便是精确匹配了~

$sub = $db->quote("web安全%"); $sub = strtr($sub,array("_"=>"\_","%"=>"\%")); $que = $db->query("select from study where subject like $sub"); while ($row = $que->fetch()) { print "$row[id],$row[subject],$row[price],$row[is_ffm],$row[add_time]<br>"; } print "没有数据了";

本篇完,感激大家~