여기에 doosey가 있습니다. 나는 리눅스 껍데기를 처음 접해 보았으므로 나를 맨손으로했다 ...Linux SED 검색은 한 줄에 여러 줄을 바꿉니다.
나는 클라이언트 웹 사이트에서 xss 공격으로부터 슈퍼 전역을 제거하기 위해 만든 PHP 함수로 전체를 대체해야한다.
echo MYCLASS::myfunction($_REQUEST['HELLO1']) . ' AND ' . MYCLASS::myfunction($_REQUEST['HELLO2']);
주요 문제는, 내가/검색을 할 이상에 교체 할 필요가 : I는 다음과 같이 할 필요
echo $_REQUEST['HELLO1'] . ' AND ' . $_REQUEST['HELLO2'];
: 여기
처럼 원래의 코드가 보일 수 있습니다 것입니다 100 파일! Yikes! 그래서 내 솔루션은이 (리눅스 쉘에서)이었다sudo sed -i 's/\$_REQUEST[.*\]/MYCLASS::myfunction(&)/g' *.php
이 좋은 작품으로 긴 것과 같이 "$ _REQUEST는"그러나 여러 인스턴스와 함께 ... 줄에 발생하는 하나의 인스턴스 만, 그것은 나사를 위로하고 다음과 같이하십시오 :
echo MYCLASS::myfunction($_REQUEST['HELLO1'] . ' AND ' . $_REQUEST['HELLO2']);
나는 지금 내 머리카락을 꺼내고 있습니다!
모든 Linux 셸 전문가가 저를 도와 줄 수 있습니까?
sed -i "s/\$_REQUEST\[\([^\x5d]*\)\]/MYCLASS::myfunction(\1)/g" *.php
내가 ]
일치 문제를 많이했다, 그래서 나는 \x5d
와 펀트했습니다
이것은 Perl 스크립트보다 훨씬 빠릅니다. 감사합니다! –
당신도 환영합니다, 나는 똑같은 대답을 할 수 있도록 perl 1 라이너를 제공했습니다. – anubhava
그래도 하나의 문제가 있습니다. $ _REQUEST [ ''] WITH $ _REQUEST (" ')를 대체하는 방법을 대체합니다. –