1.배열에 없는 엘리먼트를 인덱싱하면 Null을 반환해야하는데 개판으로 짜서 취약점으로 이어짐


2.json_decode는 잘못된 값을 입력하면 null을 반환하지만 정상적인 JSON 객체도 null을 반환할 수 있다.

json_decode를 쓸때마다 json_last_error를 써야함


3.string을 eval하는 PHP의 노올라운 스펙! 런타임 취약점을 고려하면서 짜야하는 노오올라운 PHP!

$arr[$_POST["fuckingphp"]];

$fuckingphp = $_GET['fuckingphp'];

$fuckingphp();

$obj->$fuckingphp();

$obj = new $fuckingphp();

$someval = ${'fuckingphp_'.$fuckingphp};

$someval = $obj->$fuckingphp;


4.$_GET, $_POST가 string이라고 한번도 말안함, undefined 됐는지 확인한다고 절대로 안전하지 않음


5.노올라운 PHP만의 함수들!

is_string, filter_var, print_r, var_dump


6.index.php?a[]=asd&a[]=asdasd&b[]=$a

print_r($_GET); => "Array([a]=>Array([0]=>asd[1]=>asdasd))[b]=>Array([0]=>$a)"


7.비동기요청이 안됨